ZQuest Classic Coverage Report


Directory: src/
File: src/parser/y.tab.cpp
Date: 2025-12-29 10:30:12
Exec Total Coverage
Lines: 1110 1758 63.1%
Functions: 39 51 76.5%
Branches: 860 2306 37.3%

Line Branch Exec Source
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5 Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C GLR parser skeleton written by Paul Hilfinger. */
34
35 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
36 especially those whose name start with YY_ or yy_. They are
37 private implementation details that can be changed or removed. */
38
39 /* Identify Bison output, and Bison version. */
40 #define YYBISON 30802
41
42 /* Bison version string. */
43 #define YYBISON_VERSION "3.8.2"
44
45 /* Skeleton name. */
46 #define YYSKELETON_NAME "glr.c"
47
48 /* Pure parsers. */
49 #define YYPURE 0
50
51
52
53
54
55
56 /* First part of user prologue. */
57 #line 8 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
58
59 #include "parserDefs.h"
60 #include <stdlib.h>
61 #include <stdio.h>
62 #include <cassert>
63 #include <string>
64 #include <set>
65 #include <sstream>
66 #include "ASTVisitors.h"
67 #include "CompileOption.h"
68 #include "zsyssimple.h"
69 #include "parser/ParserHelper.h"
70 #include "base/util.h"
71
72 using std::string;
73 using std::ostringstream;
74 using namespace ZScript;
75
76 #define YYINCLUDED_STDLIB_H
77 extern int32_t yydebug;
78 extern int32_t yyrow;
79 extern int32_t yycol;
80 extern char* yytext;
81 extern int32_t yyleng;
82 extern int32_t yylex(void);
83 extern FILE *yyin, *yyout;
84 extern ZScript::AST* first_identifier_for_line;
85 extern void resetLexer();
86 void yyerror(std::shared_ptr<ASTFile>& root, const char* s);
87 void yymsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
88 void yywarn(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
89 void yyerrmsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
90 void yydb(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
91 std::string curfilename;
92 extern YYLTYPE noloc;
93
94 #define push_front(v, elem) (v).insert((v).begin(), elem)
95 void trunc_str(std::string& str, size_t sz, std::string const& header, int32_t row = yyrow,
96 int32_t col = yycol, char const* txt = yytext)
97 {
98 if(str.size() > sz)
99 {
100 yyerrmsg("ERROR: "+header+": String value '" + str + "' is too long. Max '"+std::to_string(sz)+"' characters.", row, col, txt);
101 str = str.substr(0,sz);
102 }
103 }
104
105 enum
106 {
107 ANNTY_NONE,
108 ANNTY_STR,
109 ANNTY_INT,
110 ANNTY_MAX
111 };
112 static string annot_tys[ANNTY_MAX] = {"Empty", "String", "Number"};
113
114 int annot_row, annot_col;
115 string annot_err_txt;
116 static const string annot_err_header = "ERROR: Bad Annotation Value";
117 struct AnnotData
118 {
119 string key, strval;
120 string val, unescaped_val;
121 zfix intval;
122 uint type;
123 };
124 void annot_errstr(string const& str)
125 {
126 yyerrmsg(str, annot_row, annot_col, annot_err_txt.c_str());
127 }
128 void annot_trunc_str(string& str, size_t size)
129 {
130 trunc_str(str, size, annot_err_header, annot_row, annot_col, annot_err_txt.c_str());
131 }
132 bool annot_type_check(uint expected, AnnotData const& data)
133 {
134 if(expected == data.type)
135 return true;
136 annot_errstr("ERROR: Bad Annotation Value: @"+data.key
137 +" expects a "+annot_tys[expected]+", not a "+annot_tys[data.type]);
138 return false;
139 }
140 void annot_incompatible(string const& key1, string const& key2)
141 {
142 annot_errstr(fmt::format("ERROR: Annotation '@{}' not compatible with '@{}'", key1, key2));
143 }
144 void handle_annotations(ASTAnnotationList* list, std::function<bool(AnnotData&)> fn)
145 {
146 owning_vector<ASTAnnotation>& set = list->set;
147 annot_row = list->location.first_line;
148 annot_col = list->location.first_column;
149 std::set<std::string> used_keys;
150 for(size_t q = 0; q < set.size(); ++q)
151 {
152 ASTAnnotation* a = set[q];
153 AnnotData data = AnnotData();
154 data.key = a->key->getValue();
155 data.type = ANNTY_NONE;
156 data.strval = "";
157 data.intval = 0;
158 if(a->strval)
159 {
160 data.type = ANNTY_STR;
161 data.strval = a->strval->getValue();
162 }
163 else if(a->intval)
164 {
165 data.type = ANNTY_INT;
166 data.intval = zslongToFix(a->intval->getValue(nullptr));
167 }
168
169 data.val = "";
170 data.unescaped_val = "";
171 switch(data.type)
172 {
173 case ANNTY_STR:
174 data.val = data.strval;
175 data.unescaped_val = util::disallow_escapes(util::escape_characters(data.strval));
176 break;
177 case ANNTY_INT:
178 data.val = data.unescaped_val = data.intval.str();
179 break;
180 }
181 annot_err_txt = "@" + data.key + "(" + data.val + ")";
182
183 if(used_keys.contains(data.key))
184 {
185 annot_errstr("ERROR: Duplicate Annotation Key: @"+data.key+" was already set.");
186 continue;
187 }
188 if(!fn(data))
189 annot_errstr("ERROR: Bad Annotation Key: '"+data.val+"'");
190 }
191 delete list;
192 }
193
194 ASTExpr* handle_statement_expr(ASTExpr* expr)
195 {
196 if(ASTExprIncrement* increm = dynamic_cast<ASTExprIncrement*>(expr))
197 {
198 increm->is_pre = true;
199 }
200 else if(ASTExprDecrement* decrem = dynamic_cast<ASTExprDecrement*>(expr))
201 {
202 decrem->is_pre = true;
203 }
204 return expr;
205 }
206
207 #pragma warning( disable : 4065 )
208
209 #line 210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
210
211 # ifndef YY_CAST
212 # ifdef __cplusplus
213 # define YY_CAST(Type, Val) static_cast<Type> (Val)
214 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
215 # else
216 # define YY_CAST(Type, Val) ((Type) (Val))
217 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
218 # endif
219 # endif
220 # ifndef YY_NULLPTR
221 # if defined __cplusplus
222 # if 201103L <= __cplusplus
223 # define YY_NULLPTR nullptr
224 # else
225 # define YY_NULLPTR 0
226 # endif
227 # else
228 # define YY_NULLPTR ((void*)0)
229 # endif
230 # endif
231
232 #include "y.tab.hpp"
233
234 /* Symbol kind. */
235 enum yysymbol_kind_t
236 {
237 YYSYMBOL_YYEMPTY = -2,
238 YYSYMBOL_YYEOF = 0, /* "end of file" */
239 YYSYMBOL_YYerror = 1, /* error */
240 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
241 YYSYMBOL_SCRIPT = 3, /* SCRIPT */
242 YYSYMBOL_ZCLASS = 4, /* ZCLASS */
243 YYSYMBOL_FOR = 5, /* FOR */
244 YYSYMBOL_LOOP = 6, /* LOOP */
245 YYSYMBOL_IF = 7, /* IF */
246 YYSYMBOL_ELSE = 8, /* ELSE */
247 YYSYMBOL_SWITCH = 9, /* SWITCH */
248 YYSYMBOL_CASE = 10, /* CASE */
249 YYSYMBOL_DEFAULT = 11, /* DEFAULT */
250 YYSYMBOL_RETURN = 12, /* RETURN */
251 YYSYMBOL_IMPORT = 13, /* IMPORT */
252 YYSYMBOL_ZTRUE = 14, /* ZTRUE */
253 YYSYMBOL_ZFALSE = 15, /* ZFALSE */
254 YYSYMBOL_WHILE = 16, /* WHILE */
255 YYSYMBOL_BREAK = 17, /* BREAK */
256 YYSYMBOL_CONTINUE = 18, /* CONTINUE */
257 YYSYMBOL_ZCONST = 19, /* ZCONST */
258 YYSYMBOL_DO = 20, /* DO */
259 YYSYMBOL_TYPEDEF = 21, /* TYPEDEF */
260 YYSYMBOL_EXPECTERROR = 22, /* EXPECTERROR */
261 YYSYMBOL_OPTIONVALUE = 23, /* OPTIONVALUE */
262 YYSYMBOL_ISINCLUDED = 24, /* ISINCLUDED */
263 YYSYMBOL_DEFINE = 25, /* DEFINE */
264 YYSYMBOL_ENUM = 26, /* ENUM */
265 YYSYMBOL_NAMESPACE = 27, /* NAMESPACE */
266 YYSYMBOL_USING = 28, /* USING */
267 YYSYMBOL_ALWAYS = 29, /* ALWAYS */
268 YYSYMBOL_ZASM = 30, /* ZASM */
269 YYSYMBOL_INCLUDE = 31, /* INCLUDE */
270 YYSYMBOL_INCLUDEPATH = 32, /* INCLUDEPATH */
271 YYSYMBOL_INCLUDEIF = 33, /* INCLUDEIF */
272 YYSYMBOL_UNTIL = 34, /* UNTIL */
273 YYSYMBOL_UNLESS = 35, /* UNLESS */
274 YYSYMBOL_REPEAT = 36, /* REPEAT */
275 YYSYMBOL_INLINE = 37, /* INLINE */
276 YYSYMBOL_INTERNAL = 38, /* INTERNAL */
277 YYSYMBOL_STATIC = 39, /* STATIC */
278 YYSYMBOL_CONSTEXPR = 40, /* CONSTEXPR */
279 YYSYMBOL_NEW = 41, /* NEW */
280 YYSYMBOL_DELETE = 42, /* DELETE */
281 YYSYMBOL_CASSERT = 43, /* CASSERT */
282 YYSYMBOL_ZAUTO = 44, /* ZAUTO */
283 YYSYMBOL_ZVOID = 45, /* ZVOID */
284 YYSYMBOL_UNTYPED = 46, /* UNTYPED */
285 YYSYMBOL_ZBOOL = 47, /* ZBOOL */
286 YYSYMBOL_ZFLOAT = 48, /* ZFLOAT */
287 YYSYMBOL_ZCHAR = 49, /* ZCHAR */
288 YYSYMBOL_ZLONG = 50, /* ZLONG */
289 YYSYMBOL_ZRGB = 51, /* ZRGB */
290 YYSYMBOL_COMMA = 52, /* COMMA */
291 YYSYMBOL_DOT = 53, /* DOT */
292 YYSYMBOL_SEMICOLON = 54, /* SEMICOLON */
293 YYSYMBOL_SCOPERES = 55, /* SCOPERES */
294 YYSYMBOL_COLON = 56, /* COLON */
295 YYSYMBOL_IN = 57, /* IN */
296 YYSYMBOL_LPAREN = 58, /* LPAREN */
297 YYSYMBOL_RPAREN = 59, /* RPAREN */
298 YYSYMBOL_EMPTYBRACKETS = 60, /* EMPTYBRACKETS */
299 YYSYMBOL_LBRACKET = 61, /* LBRACKET */
300 YYSYMBOL_RBRACKET = 62, /* RBRACKET */
301 YYSYMBOL_LBRACE = 63, /* LBRACE */
302 YYSYMBOL_RBRACE = 64, /* RBRACE */
303 YYSYMBOL_QMARK = 65, /* QMARK */
304 YYSYMBOL_ARROW = 66, /* ARROW */
305 YYSYMBOL_INCREMENT = 67, /* INCREMENT */
306 YYSYMBOL_DECREMENT = 68, /* DECREMENT */
307 YYSYMBOL_NOT = 69, /* NOT */
308 YYSYMBOL_BITNOT = 70, /* BITNOT */
309 58701 YYSYMBOL_EXPN = 71, /* EXPN */
310 YYSYMBOL_TIMES = 72, /* TIMES */
311 YYSYMBOL_DIVIDE = 73, /* DIVIDE */
312 YYSYMBOL_MODULO = 74, /* MODULO */
313 YYSYMBOL_PLUS = 75, /* PLUS */
314 YYSYMBOL_MINUS = 76, /* MINUS */
315 YYSYMBOL_LSHIFT = 77, /* LSHIFT */
316 1726407 YYSYMBOL_RSHIFT = 78, /* RSHIFT */
317 1726407 YYSYMBOL_LE = 79, /* LE */
318 YYSYMBOL_LT = 80, /* LT */
319 4156 YYSYMBOL_GE = 81, /* GE */
320 4156 YYSYMBOL_GT = 82, /* GT */
321
1/2
✓ Branch 0 taken 4156 times.
✗ Branch 1 not taken.
4156 YYSYMBOL_EQ = 83, /* EQ */
322 YYSYMBOL_NE = 84, /* NE */
323
3/8
✓ Branch 0 taken 58757 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 58757 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 58757 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
58757 YYSYMBOL_BITAND = 85, /* BITAND */
324 YYSYMBOL_BITXOR = 86, /* BITXOR */
325 YYSYMBOL_BITOR = 87, /* BITOR */
326 YYSYMBOL_AND = 88, /* AND */
327 69335 YYSYMBOL_OR = 89, /* OR */
328 1877 YYSYMBOL_XOR = 90, /* XOR */
329 3404 YYSYMBOL_ASSIGN = 91, /* ASSIGN */
330 10000 YYSYMBOL_PLUSASSIGN = 92, /* PLUSASSIGN */
331 2595 YYSYMBOL_MINUSASSIGN = 93, /* MINUSASSIGN */
332 663324 YYSYMBOL_TIMESASSIGN = 94, /* TIMESASSIGN */
333 763877 YYSYMBOL_DIVIDEASSIGN = 95, /* DIVIDEASSIGN */
334 3448 YYSYMBOL_MODULOASSIGN = 96, /* MODULOASSIGN */
335 20 YYSYMBOL_LSHIFTASSIGN = 97, /* LSHIFTASSIGN */
336 38374 YYSYMBOL_RSHIFTASSIGN = 98, /* RSHIFTASSIGN */
337 170147 YYSYMBOL_BITANDASSIGN = 99, /* BITANDASSIGN */
338 YYSYMBOL_BITXORASSIGN = 100, /* BITXORASSIGN */
339 YYSYMBOL_BITORASSIGN = 101, /* BITORASSIGN */
340 6 YYSYMBOL_ANDASSIGN = 102, /* ANDASSIGN */
341 YYSYMBOL_ORASSIGN = 103, /* ORASSIGN */
342 YYSYMBOL_CAST = 104, /* CAST */
343 YYSYMBOL_RANGE = 105, /* RANGE */
344 YYSYMBOL_RANGE_L = 106, /* RANGE_L */
345 YYSYMBOL_RANGE_R = 107, /* RANGE_R */
346 YYSYMBOL_RANGE_LR = 108, /* RANGE_LR */
347 YYSYMBOL_RANGE_N = 109, /* RANGE_N */
348 YYSYMBOL_APPXEQUAL = 110, /* APPXEQUAL */
349 58759 YYSYMBOL_DOUBLEBANG = 111, /* DOUBLEBANG */
350 119035 YYSYMBOL_PERCENT = 112, /* PERCENT */
351 YYSYMBOL_BITNOTASSIGN = 113, /* BITNOTASSIGN */
352 YYSYMBOL_INVMOD = 114, /* INVMOD */
353 YYSYMBOL_DOUBLEADDR = 115, /* DOUBLEADDR */
354 YYSYMBOL_DOUBLESTAR = 116, /* DOUBLESTAR */
355 YYSYMBOL_HANDLE = 117, /* HANDLE */
356 YYSYMBOL_HANDLETOHANDLE = 118, /* HANDLETOHANDLE */
357 YYSYMBOL_ADDR = 119, /* ADDR */
358 YYSYMBOL_HASH = 120, /* HASH */
359 YYSYMBOL_ENDLINE = 121, /* ENDLINE */
360 YYSYMBOL_OPTION = 122, /* OPTION */
361 YYSYMBOL_INHERIT = 123, /* INHERIT */
362 YYSYMBOL_IDENTIFIER = 124, /* IDENTIFIER */
363 YYSYMBOL_QUOTEDSTRING = 125, /* QUOTEDSTRING */
364 YYSYMBOL_CASESTRING = 126, /* CASESTRING */
365 YYSYMBOL_IMPORTSTRING = 127, /* IMPORTSTRING */
366 YYSYMBOL_SINGLECHAR = 128, /* SINGLECHAR */
367 YYSYMBOL_NUMBER = 129, /* NUMBER */
368 YYSYMBOL_LONGNUMBER = 130, /* LONGNUMBER */
369 YYSYMBOL_YYACCEPT = 131, /* $accept */
370 YYSYMBOL_Init = 132, /* Init */
371 YYSYMBOL_Global_List = 133, /* Global_List */
372 YYSYMBOL_Global_Statement = 134, /* Global_Statement */
373 YYSYMBOL_Trail_Comma_RBrace = 135, /* Trail_Comma_RBrace */
374 YYSYMBOL_Namespace = 136, /* Namespace */
375 YYSYMBOL_Namespace_Block_List = 137, /* Namespace_Block_List */
376 YYSYMBOL_Namespace_Statement = 138, /* Namespace_Statement */
377 4234 YYSYMBOL_Using = 139, /* Using */
378 4234 YYSYMBOL_AlwaysUsing = 140, /* AlwaysUsing */
379 4234 YYSYMBOL_Import = 141, /* Import */
380
2/2
✓ Branch 0 taken 4233 times.
✓ Branch 1 taken 1 times.
4234 YYSYMBOL_IncludePath = 142, /* IncludePath */
381 YYSYMBOL_Option = 143, /* Option */
382 4233 YYSYMBOL_Statement_Assert = 144, /* Statement_Assert */
383 4233 YYSYMBOL_DataTypeDef = 145, /* DataTypeDef */
384 4233 YYSYMBOL_StandardDataTypedef = 146, /* StandardDataTypedef */
385
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4233 times.
4233 YYSYMBOL_DataType = 147, /* DataType */
386 4233 YYSYMBOL_DataType_Mods = 148, /* DataType_Mods */
387 4233 YYSYMBOL_DataType_Base = 149, /* DataType_Base */
388
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_ScriptTypeDef = 150, /* ScriptTypeDef */
389 YYSYMBOL_Data = 151, /* Data */
390
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 YYSYMBOL_Data_List = 152, /* Data_List */
391 YYSYMBOL_Data_Element = 153, /* Data_Element */
392 YYSYMBOL_Data_Element_Array_List = 154, /* Data_Element_Array_List */
393 YYSYMBOL_Single_Data_req_assign = 155, /* Single_Data_req_assign */
394 YYSYMBOL_Data_Element_Array_Element = 156, /* Data_Element_Array_Element */
395 YYSYMBOL_Data_Element_Array_Element_Size_List = 157, /* Data_Element_Array_Element_Size_List */
396 YYSYMBOL_Function = 158, /* Function */
397 YYSYMBOL_Function_Typeless = 159, /* Function_Typeless */
398 YYSYMBOL_Function_Heading = 160, /* Function_Heading */
399 YYSYMBOL_FunctionTemplateList = 161, /* FunctionTemplateList */
400 YYSYMBOL_Function_Parameters_List = 162, /* Function_Parameters_List */
401 YYSYMBOL_Function_Parameters_Element = 163, /* Function_Parameters_Element */
402 YYSYMBOL_Function_OptParams_List = 164, /* Function_OptParams_List */
403 YYSYMBOL_Function_VarArg_Element = 165, /* Function_VarArg_Element */
404 YYSYMBOL_Class_Ident = 166, /* Class_Ident */
405 YYSYMBOL_Class = 167, /* Class */
406 YYSYMBOL_Class_Block = 168, /* Class_Block */
407 YYSYMBOL_Class_Block_List = 169, /* Class_Block_List */
408 YYSYMBOL_Class_Constructor = 170, /* Class_Constructor */
409 YYSYMBOL_Class_Destructor = 171, /* Class_Destructor */
410 YYSYMBOL_Class_Data = 172, /* Class_Data */
411 YYSYMBOL_Class_Block_Element = 173, /* Class_Block_Element */
412 YYSYMBOL_Annotated_Script = 174, /* Annotated_Script */
413 YYSYMBOL_Script = 175, /* Script */
414 YYSYMBOL_Script_Type = 176, /* Script_Type */
415 YYSYMBOL_Script_Block = 177, /* Script_Block */
416 YYSYMBOL_Script_Block_List = 178, /* Script_Block_List */
417 YYSYMBOL_Script_Block_Element = 179, /* Script_Block_Element */
418 YYSYMBOL_Annotation_List = 180, /* Annotation_List */
419 YYSYMBOL_Annotation = 181, /* Annotation */
420 YYSYMBOL_Block_Statement = 182, /* Block_Statement */
421 YYSYMBOL_Statement = 183, /* Statement */
422 4234 YYSYMBOL_Statement_NoSemicolon = 184, /* Statement_NoSemicolon */
423
2/4
✓ Branch 0 taken 4234 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4234 times.
✗ Branch 3 not taken.
4234 YYSYMBOL_Statement_Block = 185, /* Statement_Block */
424 YYSYMBOL_Statement_Block_List = 186, /* Statement_Block_List */
425 YYSYMBOL_Statement_If = 187, /* Statement_If */
426 YYSYMBOL_If_Body = 188, /* If_Body */
427 YYSYMBOL_Statement_Switch = 189, /* Statement_Switch */
428 YYSYMBOL_Statement_Switch_Body = 190, /* Statement_Switch_Body */
429 YYSYMBOL_Statement_Switch_Cases = 191, /* Statement_Switch_Cases */
430 30123 YYSYMBOL_Statement_For = 192, /* Statement_For */
431 30123 YYSYMBOL_Statement_CommaList = 193, /* Statement_CommaList */
432 30123 YYSYMBOL_Statement_For_Standard = 194, /* Statement_For_Standard */
433 30123 YYSYMBOL_Statement_For_Each = 195, /* Statement_For_Each */
434 30123 YYSYMBOL_Annotated_Loop = 196, /* Annotated_Loop */
435 YYSYMBOL_Statement_Loop = 197, /* Statement_Loop */
436 1 YYSYMBOL_Statement_Loop_Inf = 198, /* Statement_Loop_Inf */
437 1 YYSYMBOL_Statement_Loop_Range = 199, /* Statement_Loop_Range */
438 1 YYSYMBOL_Statement_Loop_Range_Base = 200, /* Statement_Loop_Range_Base */
439 1 YYSYMBOL_Token_In = 201, /* Token_In */
440 1 YYSYMBOL_Statement_While = 202, /* Statement_While */
441
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
2 YYSYMBOL_Statement_Do = 203, /* Statement_Do */
442
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_Repeat = 204, /* Statement_Repeat */
443
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_Return = 205, /* Statement_Return */
444
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_CompileError = 206, /* Statement_CompileError */
445 YYSYMBOL_Annotated_Enum = 207, /* Annotated_Enum */
446 YYSYMBOL_DataEnum = 208, /* DataEnum */
447
2/6
✓ Branch 0 taken 4231 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4231 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4231 YYSYMBOL_Enum_Block = 209, /* Enum_Block */
448 YYSYMBOL_ScopeRes = 210, /* ScopeRes */
449 YYSYMBOL_Identifier_List = 211, /* Identifier_List */
450 YYSYMBOL_Scoperes_Identifier_List = 212, /* Scoperes_Identifier_List */
451 YYSYMBOL_Mixed_Identifier_List = 213, /* Mixed_Identifier_List */
452
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 YYSYMBOL_idlist_scopres = 214, /* idlist_scopres */
453 YYSYMBOL_idlist_dot = 215, /* idlist_dot */
454 YYSYMBOL_Ambigious_Iden_List = 216, /* Ambigious_Iden_List */
455 YYSYMBOL_Identifier = 217, /* Identifier */
456 YYSYMBOL_Func_Left = 218, /* Func_Left */
457 YYSYMBOL_Function_Call = 219, /* Function_Call */
458 YYSYMBOL_Function_Call_Parameters = 220, /* Function_Call_Parameters */
459 830 YYSYMBOL_Expr_1 = 221, /* Expr_1 */
460 39 YYSYMBOL_Expr_2 = 222, /* Expr_2 */
461 YYSYMBOL_Expr_Arrow = 223, /* Expr_Arrow */
462 378 YYSYMBOL_Expr_3 = 224, /* Expr_3 */
463 33009 YYSYMBOL_Expr_4 = 225, /* Expr_4 */
464 28 YYSYMBOL_Expr_5 = 226, /* Expr_5 */
465 27 YYSYMBOL_Expr_6 = 227, /* Expr_6 */
466 6 YYSYMBOL_Expr_7 = 228, /* Expr_7 */
467 31 YYSYMBOL_Expr_8 = 229, /* Expr_8 */
468 1 YYSYMBOL_Expr_9 = 230, /* Expr_9 */
469 5 YYSYMBOL_Expr_10 = 231, /* Expr_10 */
470 YYSYMBOL_Expr_11 = 232, /* Expr_11 */
471 YYSYMBOL_Expr_12 = 233, /* Expr_12 */
472 YYSYMBOL_Expr_13 = 234, /* Expr_13 */
473 YYSYMBOL_Expr_14 = 235, /* Expr_14 */
474 YYSYMBOL_Expr_15 = 236, /* Expr_15 */
475 YYSYMBOL_Expr_16 = 237, /* Expr_16 */
476 YYSYMBOL_Expr_17 = 238, /* Expr_17 */
477 YYSYMBOL_Expr_18 = 239, /* Expr_18 */
478 YYSYMBOL_Expression = 240, /* Expression */
479 YYSYMBOL_Statement_Expression = 241, /* Statement_Expression */
480 YYSYMBOL_Expression_Constant = 242, /* Expression_Constant */
481 8 YYSYMBOL_Expression_Const_Range = 243, /* Expression_Const_Range */
482
2/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8 YYSYMBOL_Expression_Range = 244, /* Expression_Range */
483 YYSYMBOL_Literal = 245, /* Literal */
484 YYSYMBOL_QuotedString = 246, /* QuotedString */
485 YYSYMBOL_Literal_String = 247, /* Literal_String */
486 YYSYMBOL_Literal_Bool = 248, /* Literal_Bool */
487 YYSYMBOL_Literal_Array = 249, /* Literal_Array */
488 YYSYMBOL_Literal_Array_Body = 250 /* Literal_Array_Body */
489 };
490 typedef enum yysymbol_kind_t yysymbol_kind_t;
491
492
493 /* Default (constant) value used for initialization for null
494 right-hand sides. Unlike the standard yacc.c template, here we set
495 the default value of $$ to a zeroed-out value. Since the default
496 42693 value is undefined, this behavior is technically correct. */
497
2/6
✓ Branch 0 taken 42693 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 42693 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
42693 static YYSTYPE yyval_default;
498 static YYLTYPE yyloc_default
499 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
500 26642 = { 1, 1, 1, 1 }
501
2/6
✓ Branch 0 taken 26642 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 26642 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
26642 # endif
502 ;
503
504
505
506 #include <stddef.h>
507 #include <stdint.h>
508 #include <stdio.h>
509 #include <stdlib.h>
510 #include <string.h>
511
512 #ifdef short
513 1877 # undef short
514
3/8
✓ Branch 0 taken 1877 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1877 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1877 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1877 #endif
515
516 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
517 <limits.h> and (if available) <stdint.h> are included
518 so that the code can choose integer types of a good width. */
519
520 #ifndef __PTRDIFF_MAX__
521 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
522 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
523 10801 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
524 10801 # define YY_STDINT_H
525
3/8
✓ Branch 0 taken 10801 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10801 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10801 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
10801 # endif
526 #endif
527
528 /* Narrow types that promote to a signed type and that can represent a
529 signed or unsigned integer of at least N bits. In tables they can
530 save space and decrease cache pressure. Promoting to a signed type
531 helps avoid bugs in integer arithmetic. */
532
533 #ifdef __INT_LEAST8_MAX__
534 2 typedef __INT_LEAST8_TYPE__ yytype_int8;
535
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4 #elif defined YY_STDINT_H
536
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 typedef int_least8_t yytype_int8;
537 #else
538 typedef signed char yytype_int8;
539 #endif
540
541 #ifdef __INT_LEAST16_MAX__
542 typedef __INT_LEAST16_TYPE__ yytype_int16;
543 #elif defined YY_STDINT_H
544 typedef int_least16_t yytype_int16;
545 #else
546 typedef short yytype_int16;
547 #endif
548
549 /* Work around bug in HP-UX 11.23, which defines these macros
550 incorrectly for preprocessor constants. This workaround can likely
551 be removed in 2023, as HPE has promised support for HP-UX 11.23
552 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
553 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
554
3/8
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4 #ifdef __hpux
555 # undef UINT_LEAST8_MAX
556 # undef UINT_LEAST16_MAX
557
3/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
18 # define UINT_LEAST8_MAX 255
558 # define UINT_LEAST16_MAX 65535
559 #endif
560
561 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
562 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
563 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
564 10039 && UINT_LEAST8_MAX <= INT_MAX)
565 typedef uint_least8_t yytype_uint8;
566 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
567 typedef unsigned char yytype_uint8;
568 10039 #else
569 10039 typedef short yytype_uint8;
570
4/10
✓ Branch 0 taken 10039 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10039 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10039 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 10039 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10039 #endif
571
572 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
573 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
574 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
575 && UINT_LEAST16_MAX <= INT_MAX)
576 278449 typedef uint_least16_t yytype_uint16;
577 278449 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
578 278449 typedef unsigned short yytype_uint16;
579 #else
580 6699238 typedef int yytype_uint16;
581 #endif
582 #ifndef YYPTRDIFF_T
583 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
584 # define YYPTRDIFF_T __PTRDIFF_TYPE__
585 531369 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
586 531369 # elif defined PTRDIFF_MAX
587 531369 # ifndef ptrdiff_t
588 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
589 6167869 # endif
590 # define YYPTRDIFF_T ptrdiff_t
591 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
592 # else
593 # define YYPTRDIFF_T long
594
2/6
✓ Branch 0 taken 2501 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2501 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2501 # define YYPTRDIFF_MAXIMUM LONG_MAX
595
2/6
✓ Branch 0 taken 451355 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 451355 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
451355 # endif
596
2/6
✓ Branch 0 taken 90366 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 90366 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
90366 #endif
597
2/6
✓ Branch 0 taken 670383 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 670383 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
670383
598
2/6
✓ Branch 0 taken 3964899 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3964899 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3964899 #ifndef YYSIZE_T
599
2/6
✓ Branch 0 taken 500756 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 500756 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
500756 # ifdef __SIZE_TYPE__
600
2/6
✓ Branch 0 taken 37149 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 37149 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
37149 # define YYSIZE_T __SIZE_TYPE__
601
2/6
✓ Branch 0 taken 10386 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10386 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10386 # elif defined size_t
602 # define YYSIZE_T size_t
603 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
604 971443 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
605 971443 # define YYSIZE_T size_t
606
1/4
✓ Branch 0 taken 971443 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1942886 # else
607 # define YYSIZE_T unsigned
608 # endif
609 #endif
610
611 #define YYSIZE_MAXIMUM \
612 YY_CAST (YYPTRDIFF_T, \
613 2595 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
614 2595 ? YYPTRDIFF_MAXIMUM \
615
3/8
✓ Branch 0 taken 2595 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2595 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2595 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2595 : YY_CAST (YYSIZE_T, -1)))
616
617 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
618
619
620 #ifndef YY_
621 # if defined YYENABLE_NLS && YYENABLE_NLS
622 # if ENABLE_NLS
623 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
624 1172039 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
625
1/2
✓ Branch 0 taken 1172039 times.
✗ Branch 1 not taken.
1172039 # endif
626 # endif
627 1172039 # ifndef YY_
628 1172039 # define YY_(Msgid) Msgid
629 # endif
630 2415018 #endif
631 2415018
632 2415018
633
2/2
✓ Branch 0 taken 2341953 times.
✓ Branch 1 taken 73065 times.
2415018 #ifndef YYFREE
634 73065 # define YYFREE free
635 2415018 #endif
636 2415018 #ifndef YYMALLOC
637 # define YYMALLOC malloc
638 #endif
639 #ifndef YYREALLOC
640 # define YYREALLOC realloc
641 2560 #endif
642 2560
643 2560 #ifdef __cplusplus
644 2560 typedef bool yybool;
645 2560 # define yytrue true
646 # define yyfalse false
647 2415018 #else
648
2/6
✓ Branch 0 taken 2415018 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2415018 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2415018 /* When we move to stdbool, get rid of the various casts to yybool. */
649 typedef signed char yybool;
650
2/2
✓ Branch 0 taken 1213396 times.
✓ Branch 1 taken 1201622 times.
2415018 # define yytrue 1
651 1201622 # define yyfalse 0
652 #endif
653
654 #ifndef YYSETJMP
655 # include <setjmp.h>
656 # define YYJMP_BUF jmp_buf
657 2900204 # define YYSETJMP(Env) setjmp (Env)
658 2900204 /* Pacify Clang and ICC. */
659 2900204 # define YYLONGJMP(Env, Val) \
660 2900204 do { \
661 2900204 longjmp (Env, Val); \
662 2871801 YY_ASSERT (0); \
663 } while (yyfalse)
664 #endif
665
666 #ifndef YY_ATTRIBUTE_PURE
667 329258 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
668 329258 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
669 329258 # else
670 329258 # define YY_ATTRIBUTE_PURE
671 329258 # endif
672 #endif
673 5772005
674
2/6
✓ Branch 0 taken 5772005 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5772005 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5772005 #ifndef YY_ATTRIBUTE_UNUSED
675 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
676
2/4
✓ Branch 0 taken 5772005 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5772005 times.
✗ Branch 3 not taken.
5772005 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
677 # else
678 # define YY_ATTRIBUTE_UNUSED
679
2/2
✓ Branch 0 taken 5134833 times.
✓ Branch 1 taken 637172 times.
5772005 # endif
680 #endif
681
682 /* The _Noreturn keyword of C11. */
683 #ifndef _Noreturn
684 # if (defined __cplusplus \
685 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
686 17 || (defined _MSC_VER && 1900 <= _MSC_VER)))
687 17 # define _Noreturn [[noreturn]]
688
2/6
✓ Branch 0 taken 17 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
17 # elif ((!defined __cplusplus || defined __clang__) \
689 && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
690 || (!defined __STRICT_ANSI__ \
691 && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
692 || (defined __apple_build_version__ \
693 ? 6000000 <= __apple_build_version__ \
694 : 3 < __clang_major__ + (5 <= __clang_minor__))))))
695 /* _Noreturn works as-is. */
696 # elif (2 < __GNUC__ + (8 <= __GNUC_MINOR__) || defined __clang__ \
697 || 0x5110 <= __SUNPRO_C)
698 # define _Noreturn __attribute__ ((__noreturn__))
699 28454 # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
700 28454 # define _Noreturn __declspec (noreturn)
701 28454 # else
702
2/6
✓ Branch 0 taken 300804 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 300804 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
300804 # define _Noreturn
703 # endif
704 #endif
705
706 /* Suppress unused-variable warnings by "using" E. */
707 #if ! defined lint || defined __GNUC__
708 # define YY_USE(E) ((void) (E))
709 #else
710 # define YY_USE(E) /* empty */
711 #endif
712
713 28454 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
714
2/6
✓ Branch 0 taken 28454 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 28454 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
28454 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
715 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
716 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
717 _Pragma ("GCC diagnostic push") \
718 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
719 # else
720 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
721 _Pragma ("GCC diagnostic push") \
722 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
723 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
724 # endif
725 15570 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
726
1/2
✓ Branch 0 taken 15570 times.
✗ Branch 1 not taken.
15570 _Pragma ("GCC diagnostic pop")
727 #else
728 # define YY_INITIAL_VALUE(Value) Value
729 #endif
730 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
731 15570 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
732 15570 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
733 #endif
734 #ifndef YY_INITIAL_VALUE
735 # define YY_INITIAL_VALUE(Value) /* Nothing. */
736 #endif
737
738 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
739 # define YY_IGNORE_USELESS_CAST_BEGIN \
740 _Pragma ("GCC diagnostic push") \
741 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
742 # define YY_IGNORE_USELESS_CAST_END \
743 _Pragma ("GCC diagnostic pop")
744 #endif
745 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
746 # define YY_IGNORE_USELESS_CAST_BEGIN
747 # define YY_IGNORE_USELESS_CAST_END
748 #endif
749
750
751 #define YY_ASSERT(E) ((void) (0 && (E)))
752
753 /* YYFINAL -- State number of the termination state. */
754 #define YYFINAL 3
755 /* YYLAST -- Last index in YYTABLE. */
756 #define YYLAST 2934
757
758 /* YYNTOKENS -- Number of terminals. */
759 #define YYNTOKENS 131
760 /* YYNNTS -- Number of nonterminals. */
761 #define YYNNTS 120
762 /* YYNRULES -- Number of rules. */
763 554465 #define YYNRULES 382
764
1/2
✓ Branch 0 taken 554465 times.
✗ Branch 1 not taken.
554465 /* YYNSTATES -- Number of states. */
765 #define YYNSTATES 743
766 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
767 #define YYMAXRHS 11
768 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
769
1/2
✓ Branch 0 taken 554465 times.
✗ Branch 1 not taken.
554465 accessed by $0, $-1, etc., in any rule. */
770 #define YYMAXLEFT 0
771
772 /* YYMAXUTOK -- Last valid token kind. */
773 #define YYMAXUTOK 385
774 554465
775 554465 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
776 554465 as returned by yylex, with out-of-bounds checking. */
777 #define YYTRANSLATE(YYX) \
778 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
779 1269354 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
780 1269354 : YYSYMBOL_YYUNDEF)
781
2/2
✓ Branch 0 taken 1191580 times.
✓ Branch 1 taken 77774 times.
1269354
782 77774 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
783 1269354 as returned by yylex. */
784 1269354 static const yytype_uint8 yytranslate[] =
785 {
786 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
790 714925 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
791 714925 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
792 714925 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
794 593390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
795 593390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
796
4/18
✓ Branch 0 taken 593390 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 593390 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 593390 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 593390 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
1186780 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
799 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
800 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
801 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
802 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
803 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
804 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
805 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
806 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
807 1280052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
808 1280052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
809 1280052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
810 1280052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
811 1280052 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
812 1280052 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
813 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
814 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
815 28315 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
816 28315 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
817 28315 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
818 28315 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
819 28315 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
820
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 28315 times.
28315 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
821 28315 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
822 28315 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
823 28315 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
824 125, 126, 127, 128, 129, 130
825 };
826
827 #if YYDEBUG
828
2/6
✓ Branch 0 taken 28315 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 28315 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
28315 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
829 static const yytype_int16 yyrline[] =
830 {
831 0, 309, 309, 315, 318, 323, 327, 328, 329, 330,
832 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
833 1658 341, 349, 350, 356, 376, 429, 435, 446, 451, 459,
834 1658 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
835 1658 470, 480, 486, 495, 499, 503, 512, 522, 528, 533,
836 1658 538, 541, 544, 553, 556, 564, 567, 575, 580, 584,
837 1658 589, 594, 595, 596, 597, 598, 599, 600, 601, 603,
838 612, 623, 629, 640, 646, 656, 662, 666, 672, 685,
839 698, 702, 706, 712, 723, 734, 750, 761, 778, 788,
840 793, 798, 805, 813, 827, 832, 840, 846, 851, 852,
841 1682237 853, 857, 867, 875, 885, 894, 897, 908, 909, 913,
842 1682237 919, 929, 934, 945, 950, 955, 960, 974, 984, 997,
843 1682237 1011, 1015, 1016, 1020, 1021, 1022, 1023, 1024, 1035, 1235,
844 1682237 1248, 1255, 1256, 1260, 1266, 1276, 1281, 1289, 1290, 1291,
845 1682237 1292, 1293, 1294, 1295, 1303, 1309, 1317, 1323, 1329, 1335,
846 1342, 1349, 1360, 1377, 1378, 1379, 1380, 1382, 1383, 1384,
847 985775 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1398,
848
2/6
✓ Branch 0 taken 985775 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 985775 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
985775 1399, 1404, 1405, 1406, 1411, 1412, 1413, 1415, 1416, 1417,
849 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1430, 1431,
850 1436, 1437, 1441, 1442, 1446, 1451, 1458, 1463, 1471, 1472,
851 134246 1480, 1484, 1489, 1493, 1501, 1508, 1515, 1525, 1530, 1534,
852 834 1539, 1546, 1551, 1556, 1563, 1570, 1571, 1575, 1580, 1588,
853
2/6
✓ Branch 0 taken 187512 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 187512 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
187512 1600, 1616, 1625, 1638, 1662, 1666, 1667, 1671, 1679, 1686,
854 1690, 1699, 1708, 1716, 1725, 1734, 1745, 1746, 1750, 1754,
855 1759, 1765, 1775, 1779, 1784, 1790, 1800, 1807, 1810, 1814,
856 1822, 1855, 1858, 1859, 1866, 1875, 1880, 1932, 1937, 1938,
857 1939, 1940, 1944, 1945, 1954, 1962, 1970, 1978, 1989, 1997,
858 2997595 2005, 2012, 2020, 2031, 2040, 2044, 2045, 2049, 2056, 2063,
859 2997595 2069, 2078, 2084, 2096, 2097, 2098, 2100, 2110, 2118, 2124,
860
2/6
✓ Branch 0 taken 2997595 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2997595 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2997595 2126, 2128, 2130, 2132, 2135, 2138, 2140, 2142, 2144, 2146,
861 2148, 2151, 2153, 2156, 2158, 2160, 2162, 2165, 2167, 2169,
862 2172, 2174, 2176, 2179, 2181, 2183, 2185, 2187, 2190, 2192,
863 2194, 2196, 2198, 2201, 2203, 2206, 2208, 2211, 2213, 2216,
864 2218, 2221, 2223, 2226, 2228, 2237, 2238, 2245, 2247, 2249,
865 2254, 2259, 2264, 2269, 2274, 2279, 2284, 2290, 2296, 2301,
866 2306, 2311, 2317, 2320, 2327, 2333, 2344, 2349, 2354, 2359,
867 2364, 2369, 2374, 2379, 2384, 2394, 2397, 2400, 2404, 2405,
868 194500 2406, 2407, 2411, 2418, 2424, 2428, 2437, 2438, 2443, 2455,
869 194500 2466, 2473, 2478
870 194500 };
871 194500 #endif
872 194500
873 194500 #define YYPACT_NINF (-608)
874 194500 #define YYTABLE_NINF (-354)
875
876 134246 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
877 134246 STATE-NUM. */
878
2/6
✓ Branch 0 taken 134246 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 134246 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
134246 static const yytype_int16 yypact[] =
879 {
880 -608, 96, 1783, -608, 95, 40, 58, 359, 700, 83,
881 55, -3, 145, 148, 744, 1113, 744, 744, 123, -608,
882 -608, -608, -608, -608, -608, -608, -608, -608, 66, 17,
883 213, -608, -608, 176, 228, -608, -608, -608, 233, 243,
884 -608, 12, -608, -608, 272, 289, -608, -608, -608, -608,
885 309, 7, -608, 298, -608, 149, -608, 157, 205, 240,
886
2/6
✓ Branch 0 taken 834 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
834 315, -608, 248, -608, 271, -608, -608, -608, -7, 2508,
887 149, 700, 332, 335, 346, 346, -3, 384, 744, 12,
888 -608, -608, -608, -608, -608, 2508, 355, 291, 303, 358,
889 29, -608, -608, -608, -608, -608, 382, -608, 23, -608,
890 182, 103, 179, -608, -608, 311, 319, -608, -608, -608,
891 -608, -608, 149, 149, 149, 149, 149, 149, 149, 149,
892 313, 2632, -608, -608, -608, -608, 381, 383, -3, 2508,
893 2508, 2508, 2538, 2538, 2538, 2538, 2538, 700, -608, -608,
894 38380 -608, -608, 385, 386, -608, -608, -608, 387, 253, -608,
895 369, 302, 168, 229, 266, 118, 357, 363, 361, 364,
896 80, -608, 783, -608, -608, 391, -608, 321, -608, -608,
897 -608, -608, 46, -608, 265, 149, 1887, -608, -3, 190,
898 38380 3, -608, -608, 2508, 891, 1954, 149, -608, 2508, 2508,
899 38380 -608, -608, 443, 1185, -608, 541, 149, 388, -608, -608,
900 38380 -608, -608, -608, -608, -608, -608, -608, -608, 397, 1239,
901 38380 -608, -3, 334, 403, -608, 406, 407, -608, -608, -608,
902 38380 2667, -608, -608, 411, -608, 47, 412, 103, 347, 343,
903
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 38380 times.
38380 414, -608, 417, -608, 49, -608, -608, -608, -608, -608,
904 38380 107, 2283, 2508, 356, -608, -608, 2538, 2538, 2538, 2538,
905 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538,
906 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2508, 2508,
907 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508,
908 38364 2508, 2508, 1832, -608, 30, -608, -608, 149, 46, 421,
909
2/6
✓ Branch 0 taken 16 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 16 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
16 -608, -608, 1936, -608, 428, -608, 444, 446, 447, 448,
910 -608, -608, -608, -608, 449, -608, 372, -608, -608, 250,
911 435, 445, 15, 453, 392, 394, 395, 396, 400, 401,
912 -608, 177, -608, -608, 2508, 450, 451, 454, 460, 2508,
913 466, 0, 9, 1563, 467, 468, 454, 470, 440, -608,
914 1627456 1185, -608, 475, -608, 476, 477, 10, 478, 54, -608,
915 1627456 -608, 1311, -608, -608, -608, -608, -608, -608, -608, -608,
916 1627456 -608, 525, -608, -608, -608, 481, 482, 483, 32, -608,
917 1627456 484, 700, 10, 480, 72, -608, -608, 43, -608, 1626,
918 1627456 -608, 2508, -608, -608, -608, -608, -608, -608, -608, -608,
919 -608, -608, -608, -608, 485, 489, 2303, -608, 2379, -608,
920 2508, 339, -608, 195, -608, 479, -608, -608, 369, 369,
921 369, 302, 302, 168, 168, 229, 229, 229, 229, 266,
922 266, 266, 266, 118, 357, 363, 361, 493, 364, -608,
923 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
924 -608, -608, -608, 360, -608, -608, -608, 46, -608, 2508,
925 -608, -608, -608, -608, -608, -608, -608, -608, -608, 34,
926 494, 495, -608, -608, -608, 425, -608, -608, -608, -608,
927 -608, -608, 2508, -608, 501, 1689, 2044, 2108, -608, 2508,
928 -608, 2508, -608, 502, -608, 503, 81, -608, 2508, 2508,
929 -608, 2508, 505, -608, -608, -608, -608, -608, -608, -608,
930 893 -608, 1563, -608, -608, -608, -608, -608, -608, -608, 541,
931 893 2508, 149, 507, 509, -608, 514, -608, 515, 516, 518,
932 893 -608, 2722, -608, 519, 504, -608, -608, -608, 210, -608,
933 893 512, -608, -608, 2508, -608, -608, 2538, -608, 517, -608,
934 -608, -608, 520, -608, -608, 452, 455, -608, -608, 521,
935 7 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
936 7 327, -608, 2508, 1563, 2508, 327, 31, 251, 211, 10,
937
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7 times.
7 523, 535, 536, 546, -608, -608, 549, 550, 551, 554,
938 555, -608, -608, 526, -608, 541, 2508, -608, -608, -608,
939 -608, -608, -608, -608, -608, 2757, -608, 527, -608, -608,
940 1005, -608, -608, -608, 2508, -608, -608, 2508, 219, -608,
941 563, 2415, 327, 2508, 2508, 2508, 2508, 2508, 2508, 1563,
942 486, 1563, 1563, 561, 1563, 2508, 2508, 1689, 1563, 1563,
943 7 700, 559, 571, -608, 568, -608, 580, 576, 2508, 2508,
944 7 222, 2415, -608, -608, -608, -608, -608, 578, -608, 2508,
945 630, 631, 415, 634, 584, 588, -608, 641, -608, 560,
946
2/6
✓ Branch 0 taken 302 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 302 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
302 -608, -608, 2810, 2457, 1689, 1563, 273, 280, 2508, 1563,
947 258, 1563, -608, 1563, 1563, 2184, 594, 94, 1057, 1563,
948 644, 645, 1563, -608, -608, 49, -608, 270, 647, -608,
949 -608, -608, -608, 598, -608, 2508, 1563, -608, -608, -608,
950 602, 251, 605, 617, -608, -608, -608, 1057, 2207, 619,
951 1437, -608, 1563, 1563, -608, -608, 1689, 1563, 1563, 1563,
952 622, -608, -608, -608, -608, 1437, 626, 628, 632, -608,
953 -608, -608, -608, 670, -608, -608, 1563, -608, -608, -608,
954 1563, -608, -608
955 };
956
2/6
✓ Branch 0 taken 38062 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 38062 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
38062
957 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
958 Performed when YYTABLE does not specify something else to do. Zero
959 means the default is an error. */
960 static const yytype_int16 yydefact[] =
961 {
962 5, 0, 2, 1, 0, 0, 0, 0, 0, 0,
963 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
964 62, 63, 64, 65, 66, 67, 68, 257, 0, 0,
965 274, 3, 8, 0, 0, 6, 7, 4, 0, 0,
966 55, 0, 58, 60, 0, 0, 12, 15, 14, 13,
967 0, 0, 145, 0, 251, 0, 69, 258, 259, 260,
968 261, 273, 0, 105, 0, 43, 274, 59, 0, 0,
969 0, 0, 0, 0, 262, 263, 0, 0, 0, 0,
970 86, 71, 87, 85, 84, 0, 0, 0, 0, 0,
971 0, 17, 18, 19, 9, 57, 72, 74, 76, 88,
972 0, 0, 78, 10, 11, 0, 0, 130, 128, 250,
973 16, 270, 0, 0, 0, 0, 0, 0, 0, 0,
974 0, 0, 106, 56, 376, 377, 0, 0, 0, 0,
975 38925 0, 0, 0, 0, 0, 0, 0, 0, 374, 367,
976
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 38925 times.
38925 365, 366, 283, 0, 292, 286, 289, 294, 295, 301,
977 303, 307, 310, 313, 318, 323, 325, 327, 329, 331,
978 333, 335, 337, 352, 354, 0, 284, 375, 368, 369,
979 370, 256, 0, 78, 0, 0, 0, 41, 0, 0,
980 0, 44, 46, 0, 0, 0, 0, 81, 0, 0,
981 38925 77, 90, 0, 0, 89, 100, 0, 0, 144, 264,
982 38925 266, 265, 268, 271, 267, 272, 269, 70, 0, 0,
983 38925 108, 0, 0, 0, 114, 0, 0, 120, 122, 118,
984 0, 115, 116, 0, 113, 0, 0, 69, 0, 0,
985 38955 0, 336, 0, 382, 0, 296, 297, 299, 300, 298,
986
2/6
✓ Branch 0 taken 38955 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 38955 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
38955 0, 0, 0, 0, 290, 291, 0, 0, 0, 0,
987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
989
1/2
✓ Branch 0 taken 38955 times.
✗ Branch 1 not taken.
38955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
990 0, 0, 0, 373, 0, 22, 252, 0, 0, 0,
991 23, 29, 0, 27, 0, 28, 0, 0, 0, 0,
992 33, 36, 35, 34, 0, 42, 0, 53, 151, 0,
993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
994 73, 0, 83, 75, 0, 0, 0, 0, 0, 248,
995 0, 0, 0, 0, 0, 0, 0, 0, 0, 171,
996 0, 193, 0, 197, 0, 0, 0, 0, 0, 196,
997 158, 0, 159, 160, 161, 215, 216, 162, 224, 225,
998 7 226, 229, 163, 164, 165, 0, 0, 0, 283, 353,
999
2/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7 0, 0, 0, 0, 97, 98, 99, 0, 94, 0,
1000 129, 0, 117, 119, 125, 126, 123, 107, 110, 111,
1001 112, 109, 121, 124, 0, 0, 0, 285, 0, 380,
1002
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 0, 0, 279, 0, 282, 0, 288, 302, 304, 305,
1003 306, 308, 309, 311, 312, 315, 314, 317, 316, 319,
1004 320, 322, 321, 324, 326, 328, 330, 0, 332, 338,
1005 339, 340, 341, 342, 343, 344, 345, 346, 348, 349,
1006 350, 351, 347, 0, 20, 21, 255, 0, 254, 0,
1007 24, 25, 26, 38, 39, 30, 31, 32, 37, 0,
1008 0, 0, 147, 148, 146, 0, 52, 51, 50, 49,
1009 48, 47, 0, 80, 0, 190, 0, 0, 198, 0,
1010 247, 0, 167, 0, 169, 0, 0, 152, 0, 0,
1011 1159709 199, 0, 382, 156, 173, 154, 153, 223, 192, 195,
1012 194, 0, 166, 172, 155, 157, 104, 101, 92, 100,
1013 0, 0, 0, 0, 132, 0, 136, 0, 0, 0,
1014 138, 0, 135, 0, 0, 371, 372, 277, 0, 381,
1015 1159709 0, 283, 287, 0, 280, 293, 0, 253, 0, 54,
1016 149, 150, 0, 82, 91, 186, 188, 175, 174, 0,
1017 468049 178, 179, 180, 181, 182, 183, 184, 185, 191, 176,
1018 468049 273, 177, 0, 0, 0, 274, 0, 0, 0, 0,
1019 468049 0, 0, 0, 0, 168, 170, 0, 0, 0, 0,
1020 0, 228, 96, 103, 95, 100, 0, 141, 142, 139,
1021 137, 131, 134, 133, 140, 0, 278, 0, 281, 334,
1022 0, 45, 187, 189, 0, 236, 237, 0, 0, 227,
1023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1024 0, 0, 0, 0, 0, 0, 0, 190, 0, 0,
1025 0, 0, 0, 127, 0, 40, 0, 0, 0, 0,
1026 0, 0, 356, 358, 359, 357, 360, 0, 235, 0,
1027 200, 202, 0, 238, 0, 0, 249, 240, 246, 0,
1028 102, 93, 0, 0, 190, 0, 0, 0, 0, 0,
1029 0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
1030 242, 244, 0, 143, 379, 0, 218, 0, 221, 364,
1031 363, 362, 361, 0, 234, 0, 0, 232, 201, 203,
1032 0, 354, 0, 0, 355, 214, 204, 0, 0, 0,
1033 206, 239, 0, 0, 241, 378, 190, 0, 0, 0,
1034 0, 233, 213, 211, 212, 205, 0, 0, 0, 208,
1035 243, 245, 217, 219, 222, 231, 0, 210, 207, 209,
1036 47 0, 230, 220
1037 47 };
1038
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47
1039 /* YYPGOTO[NTERM-NUM]. */
1040 static const yytype_int16 yypgoto[] =
1041 {
1042 -608, -608, -608, 405, -232, 18, -608, -282, 45, -608,
1043 -608, -608, -1, 59, 6, -608, 135, -608, 682, 19,
1044 2, -608, -38, -608, -608, -608, -608, 41, -13, -608,
1045 -608, -463, -344, 60, -608, -608, 20, -608, -608, -49,
1046 473, -608, -209, 22, 14, 633, -608, -608, -492, 79,
1047 590, 191, -167, -586, -93, -607, -450, 365, -441, -608,
1048 35, -440, -608, -608, -608, -439, 350, -608, -608, -608,
1049 -501, -433, -431, -608, -424, -407, 21, -33, -143, 193,
1050 -2, -31, -608, 26, -608, 27, 656, -608, -608, 304,
1051 -608, 305, -608, -608, -47, 174, 178, 180, 110, 129,
1052 437, 441, 461, 462, 464, -608, -247, 599, 1124, 362,
1053 -400, -76, 5, -446, -608, -149, -608, -608, -608, 69
1054 };
1055
1056 /* YYDEFGOTO[NTERM-NUM]. */
1057 static const yytype_int16 yydefgoto[] =
1058 {
1059 0, 1, 2, 31, 286, 291, 292, 293, 342, 34,
1060 35, 36, 343, 344, 345, 40, 346, 42, 43, 298,
1061 347, 96, 171, 98, 570, 190, 321, 82, 219, 100,
1062 377, 373, 374, 375, 376, 64, 301, 122, 220, 221,
1063 222, 223, 224, 302, 303, 50, 380, 521, 522, 348,
1064 52, 486, 487, 549, 350, 351, 352, 478, 353, 677,
1065 678, 354, 687, 355, 356, 357, 358, 359, 360, 361,
1066 607, 362, 363, 364, 365, 366, 367, 54, 172, 55,
1067 142, 73, 57, 58, 59, 60, 61, 143, 144, 403,
1068 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1069 155, 156, 157, 158, 159, 160, 161, 162, 163, 369,
1070 370, 165, 703, 704, 166, 167, 168, 169, 170, 234
1071 };
1072
1073 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1074 positive, shift that token. If negative, reduce the rule whose
1075 number is the opposite. If YYTABLE_NINF, syntax error. */
1076 static const yytype_int16 yytable[] =
1077 {
1078 56, 37, 399, 97, 45, 56, 56, 194, 39, 179,
1079 451, 391, 56, 56, 56, 56, 49, 81, 109, 427,
1080 32, 44, 47, 53, 48, 551, 349, 506, 99, 593,
1081 568, 312, 288, 10, 552, 553, 554, 74, 75, 101,
1082 184, 656, 555, 46, 556, 177, 582, 33, 87, 88,
1083 89, 557, 27, 95, 482, 80, 448, 83, 84, 106,
1084 326, 38, 308, 484, 611, 108, 99, 27, 558, 56,
1085 95, 710, 95, 10, 464, 561, 56, 101, 686, 309,
1086 10, 51, 111, 187, 188, 235, 236, 237, 238, 239,
1087 -276, 95, -69, 539, 445, 511, 3, 576, 284, 106,
1088 725, 398, 74, 75, 675, 676, 106, 313, 316, 319,
1089 285, 641, 322, 285, 189, 577, 62, 123, 70, 227,
1090 214, 66, 631, 217, 509, 512, 230, 216, 138, 483,
1091 732, 107, 310, 311, 66, 56, 66, 41, 485, 90,
1092 283, 69, 226, 68, 447, 266, 71, 305, 320, 79,
1093 41, 79, 79, 185, 66, 612, -69, 459, 706, 283,
1094 382, 195, 218, 510, 63, 640, 213, 95, 400, 267,
1095 683, 389, 76, 349, 56, 295, 77, 551, 299, 72,
1096 215, 85, 297, 196, 500, 65, 552, 553, 554, 401,
1097 86, 368, 109, 56, 555, 670, 556, 304, 383, 407,
1098 225, 258, 259, 557, 74, 75, 174, 227, 260, 101,
1099 112, 81, 27, 79, 551, 537, -130, 300, 227, 388,
1100 558, 294, 217, 552, 553, 554, 216, 561, 261, 472,
1101 91, 555, -273, 556, -273, 296, 191, -273, 192, 473,
1102 557, 226, 306, 250, 251, 193, 446, 533, 474, 307,
1103 113, 115, 117, 119, 534, 51, 41, 558, 114, -273,
1104 27, 218, 533, 618, 561, 213, 551, 115, 119, 596,
1105 619, 638, 240, 66, 668, 552, 553, 554, 397, 215,
1106 56, 669, 92, 555, 45, 556, 659, 93, 39, 599,
1107 56, 452, 557, 116, 299, 27, 49, 94, 297, 225,
1108 32, 44, 47, 53, 48, 524, 252, 253, 97, 558,
1109 695, 41, 105, 304, 242, 109, 561, 696, 635, 243,
1110 244, 245, 716, 46, 530, 95, 103, 33, 287, 717,
1111 372, 368, 689, 300, 121, 690, 56, 294, 368, 691,
1112 81, 38, 692, 104, 41, 254, 255, 256, 257, 368,
1113 499, 296, 110, 124, 125, 41, 613, 614, 615, 616,
1114 617, 51, 126, 127, 415, 416, 417, 418, 118, 56,
1115 27, 51, 107, 538, 247, 248, 249, 56, 516, 460,
1116 461, 519, 550, 605, 606, 518, 633, 419, 420, 421,
1117 422, 87, 88, 89, 27, 175, 543, 130, 176, 531,
1118 523, 27, 131, 19, 20, 21, 22, 23, 24, 25,
1119 26, 178, 578, 180, 27, 580, 183, 41, 181, 137,
1120 520, 408, 409, 410, 515, 675, 676, 41, 411, 412,
1121 182, 164, 413, 414, 186, 197, 28, 207, 517, 228,
1122 246, 229, 262, -276, 241, -275, 283, 164, 264, 263,
1123 282, 379, 265, 715, 324, 381, 90, 384, 225, 7,
1124 385, 386, 658, 66, 138, 392, 393, 139, 140, 141,
1125 395, 394, 396, 368, 368, 368, 397, 548, 338, 449,
1126 406, 547, 453, 66, 19, 20, 21, 22, 23, 24,
1127 25, 26, 232, 233, 462, 27, 559, 138, 454, 368,
1128 455, 456, 457, 458, 463, 465, 372, 56, 475, 476,
1129 632, 349, 477, 466, 41, 467, 468, 469, 479, 56,
1130 592, 470, 471, 519, 481, 488, 489, 518, 491, 493,
1131 494, 495, 496, 501, 550, 502, 503, 504, 505, 508,
1132 349, 535, 523, 500, 525, 164, 164, 164, 526, 536,
1133 164, 323, 542, 540, 541, 544, 574, 575, 500, -353,
1134 7, 368, 520, 595, 66, 585, 515, 586, 587, 588,
1135 589, 550, 590, 594, 597, 604, 600, 649, 630, 601,
1136 517, 602, 621, 56, 603, 19, 20, 21, 22, 23,
1137 24, 25, 26, 56, 622, 623, 27, 217, 56, 702,
1138 225, 216, 299, 404, 405, 624, 297, 625, 626, 634,
1139 627, 566, 569, 628, 629, 639, 226, 368, 661, 368,
1140 368, 304, 368, 550, 652, 368, 368, 368, 56, 548,
1141 662, 663, 727, 547, 664, 665, 218, 671, 673, 674,
1142 213, 300, 679, 680, 372, 294, 371, 681, 559, 682,
1143 705, 510, 712, 713, 215, 718, 41, 719, 722, 296,
1144 56, 723, 368, 368, 519, 66, 548, 368, 518, 368,
1145 547, 368, 368, 724, 225, 729, 368, 368, 740, 51,
1146 368, 736, 737, 523, 738, 559, 164, 444, 739, 67,
1147 660, 480, 581, 390, 368, 120, 198, 102, 497, 423,
1148 528, 490, 492, 520, 424, 368, 532, 515, 368, 499,
1149 368, 368, 707, 728, 368, 368, 368, 368, 548, 7,
1150 372, 517, 547, 368, 499, 425, 173, 426, 231, 0,
1151 41, 428, 685, 0, 368, 41, 0, 559, 368, 0,
1152 0, 225, 0, 164, 19, 20, 21, 22, 23, 24,
1153 25, 26, 0, 0, 609, 27, 0, 0, 404, 0,
1154 529, 0, 164, 7, 0, 372, 0, 0, 199, 200,
1155 201, 202, 203, 204, 205, 206, 0, 0, 0, 0,
1156 0, 14, 78, 16, 17, 0, 0, 0, 19, 20,
1157 21, 22, 23, 24, 25, 26, 0, 41, 0, 27,
1158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1159 648, 164, 650, 651, 0, 653, 0, 0, 0, 657,
1160 0, 0, 0, 0, 66, 0, 0, 0, 0, 0,
1161 0, 173, 0, 0, 164, 0, 0, 0, 567, 571,
1162 0, 572, 173, 573, 0, 0, 0, 0, 0, 0,
1163 164, 579, 378, 164, 0, 0, 688, 0, 0, 0,
1164 694, 0, 697, 0, 698, 699, 0, 0, 66, 0,
1165 711, 0, 583, 714, 268, 269, 270, 271, 272, 273,
1166 274, 275, 276, 277, 278, 279, 280, 721, 0, 0,
1167 0, 0, 0, 0, 0, 598, 281, 0, 0, 0,
1168 0, 0, 314, 730, 731, 124, 125, 0, 733, 734,
1169 735, 0, 0, 0, 126, 127, 0, 0, 0, 0,
1170 0, 0, 0, 0, 608, 0, 610, 741, 0, 0,
1171 0, 742, 128, 129, 0, 0, 0, 0, 0, 0,
1172 173, 0, 0, 173, 0, 0, 27, 0, 164, 130,
1173 0, 0, 0, 0, 131, 0, 0, 0, 132, 133,
1174 134, 135, 0, 0, 0, 0, 636, 136, 0, 637,
1175 0, 137, 0, 567, 0, 642, 643, 644, 645, 646,
1176 647, 0, 0, 0, 0, 0, 0, 654, 655, 0,
1177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1178 666, 667, 173, 567, 0, 0, 0, 0, 4, 5,
1179 0, 672, 0, 0, 315, 66, 138, 0, 0, 139,
1180 140, 141, 0, 0, 7, 233, 8, 289, 507, 0,
1181 693, 10, 11, 12, 0, 0, 0, 701, 0, 0,
1182 0, 0, 14, 15, 16, 17, 0, 0, 18, 19,
1183 20, 21, 22, 23, 24, 25, 26, 720, 0, 0,
1184 27, 0, 325, 326, 327, 0, 328, 708, 709, 329,
1185 701, 124, 125, 330, 331, 332, 7, 333, 8, 334,
1186 126, 127, 0, 10, 0, 12, 0, 0, 0, 0,
1187 0, 335, 336, 337, 0, 338, 0, 0, 128, 129,
1188 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1189 0, 339, 27, 0, 0, 130, 0, 0, 0, 0,
1190 340, 0, 28, 0, 132, 133, 134, 135, 0, 30,
1191 0, 560, 7, 136, 0, 0, 0, 137, 0, 0,
1192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1193 14, 15, 16, 17, 0, 0, 0, 19, 20, 21,
1194 22, 23, 24, 25, 26, 0, 0, 584, 27, 0,
1195 0, 0, 0, 0, 28, 0, 0, 212, 0, 0,
1196 0, 66, 138, 0, 0, 139, 140, 141, 0, 0,
1197 325, 326, 327, 0, 328, 0, 0, 329, 0, 124,
1198 125, 330, 331, 332, 7, 333, 8, 334, 126, 127,
1199 0, 10, 0, 12, 0, 0, 0, 0, 0, 335,
1200 336, 337, 0, 338, 0, 620, 128, 129, 18, 19,
1201 20, 21, 22, 23, 24, 25, 26, 66, 0, 339,
1202 27, 0, 0, 130, 0, 0, 0, 0, 340, 341,
1203 0, 0, 132, 133, 134, 135, 0, 0, 7, 0,
1204 0, 136, 0, 0, 0, 137, 0, 0, 0, 0,
1205 0, 0, 0, 0, 0, 0, 14, 209, 16, 17,
1206 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
1207 26, 0, 0, 0, 27, 0, 0, 0, 0, 0,
1208 0, 0, 28, 0, 0, 212, 0, 0, 0, 66,
1209 138, 0, 0, 139, 140, 141, 325, 326, 327, 0,
1210 328, 0, 0, 329, 0, 124, 125, 330, 331, 332,
1211 7, 333, 8, 334, 126, 127, 0, 10, 0, 12,
1212 0, 0, 0, 0, 0, 335, 336, 337, 0, 338,
1213 0, 0, 128, 129, 18, 19, 20, 21, 22, 23,
1214 24, 25, 26, 66, 0, 339, 27, 0, 0, 130,
1215 0, 0, 0, 0, 340, 498, 0, 0, 132, 133,
1216 134, 135, 0, 0, 0, 0, 0, 136, 0, 0,
1217 0, 137, 429, 430, 431, 432, 433, 434, 435, 436,
1218 437, 438, 439, 440, 441, 442, 0, 0, 0, 0,
1219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0, 28, 0,
1221 0, 212, 0, 0, 0, 66, 138, 0, 0, 139,
1222 140, 141, 325, 326, 327, 0, 328, 0, 0, 329,
1223 0, 124, 125, 330, 331, 332, 7, 333, 8, 334,
1224 126, 127, 0, 10, 0, 12, 0, 0, 0, 0,
1225 0, 335, 336, 337, 0, 338, 0, 0, 128, 129,
1226 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1227 0, 339, 27, 0, 0, 130, 0, 0, 0, 0,
1228 340, 0, 0, 0, 132, 133, 134, 135, 0, 0,
1229 0, 0, 0, 136, 0, 0, 0, 137, 0, 0,
1230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1233 0, 0, 0, 0, 28, 0, 0, 212, 0, 0,
1234 0, 66, 138, 0, 0, 139, 140, 141, 325, 326,
1235 327, 0, 328, 0, 0, 329, 0, 124, 125, 330,
1236 3523 331, 332, 7, 333, 8, 334, 126, 127, 0, 10,
1237 3523 0, 12, 0, 0, 0, 0, 0, 335, 336, 337,
1238 3523 0, 338, 0, 0, 128, 129, 18, 19, 20, 21,
1239 3523 22, 23, 24, 25, 26, 0, 0, 339, 27, 0,
1240 3523 0, 130, 0, 0, 0, 0, 340, 0, 0, 0,
1241 3523 132, 133, 134, 135, 0, 0, 0, 0, 0, 136,
1242 3523 0, 0, 0, 137, 0, 7, 0, 8, 513, 0,
1243 3523 0, 0, 10, 0, 12, 0, 0, 0, 0, 0,
1244 0, 0, 0, 14, 15, 16, 17, 0, 0, 18,
1245 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1246 28, 27, 0, 0, 0, 0, 0, 66, 138, 0,
1247 514, 139, 140, 141, 325, 326, 327, 0, 328, 0,
1248 0, 329, 0, 124, 125, 330, 545, 546, 7, 333,
1249 6126 8, 334, 126, 127, 0, 10, 0, 0, 0, 0,
1250
3/8
✓ Branch 0 taken 6126 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6126 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 6126 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
6126 0, 0, 0, 335, 336, 0, 0, 338, 0, 0,
1251 128, 129, 0, 19, 20, 21, 22, 23, 24, 25,
1252 26, 0, 0, 28, 27, 0, 212, 130, 0, 0,
1253 66, 0, 340, 0, 0, 0, 132, 133, 134, 135,
1254 0, 0, 0, 0, 0, 136, 0, 0, 0, 137,
1255 3522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1256
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 0, 0, 0, 0, 0, 0, 4, 5, 0, 0,
1257 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
1258 0, 0, 7, 0, 8, 9, 28, 0, 0, 10,
1259 11, 12, 13, 66, 138, 0, 0, 139, 140, 141,
1260 14, 15, 16, 17, 0, 0, 18, 19, 20, 21,
1261 995 22, 23, 24, 25, 26, 4, 5, 0, 27, 0,
1262 995 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
1263 995 0, 7, 0, 8, 9, 0, 0, 0, 10, 11,
1264 995 12, 13, 0, 0, 0, 0, 0, 0, 0, 14,
1265 995 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1266 23, 24, 25, 26, 0, 0, 0, 27, 0, 0,
1267 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
1268 28, 0, 0, 29, 0, 0, 7, 30, 8, 289,
1269 0, 0, 0, 10, 11, 12, 0, 0, 0, 0,
1270 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1271 18, 19, 20, 21, 22, 23, 24, 25, 26, 4,
1272 5, 0, 27, 0, 0, 0, 0, 0, 0, 28,
1273 0, 290, 443, 0, 0, 7, 30, 8, 289, 0,
1274 0, 0, 10, 11, 12, 317, 0, 0, 124, 125,
1275 0, 0, 0, 14, 15, 16, 17, 126, 127, 18,
1276 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1277
2/6
✓ Branch 0 taken 3523 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3523 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3523 0, 27, 0, 0, 0, 128, 129, 0, 0, 0,
1278 450, 0, 0, 0, 28, 0, 0, 212, 0, 27,
1279 0, 30, 130, 0, 0, 0, 0, 131, 0, 0,
1280 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1281 136, 0, 0, 0, 137, 0, 0, 0, 0, 0,
1282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1283 0, 0, 0, 28, 0, 0, 212, 0, 124, 125,
1284 30, 0, 0, 7, 0, 0, 0, 126, 127, 0,
1285 0, 0, 0, 0, 0, 0, 0, 318, 66, 138,
1286 0, 0, 139, 140, 141, 128, 129, 0, 19, 20,
1287 21, 22, 23, 24, 25, 26, 0, 0, 0, 27,
1288 0, 0, 562, 563, 0, 564, 0, 131, 0, 0,
1289 86 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1290 4419 136, 0, 124, 125, 137, 0, 0, 7, 0, 0,
1291 0, 126, 127, 0, 0, 0, 0, 0, 0, 0,
1292 4 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
1293 7 129, 0, 19, 20, 21, 22, 23, 24, 25, 26,
1294 2 0, 0, 0, 27, 0, 0, 130, 0, 565, 138,
1295 0, 131, 139, 140, 141, 132, 133, 134, 135, 0,
1296 0, 0, 0, 0, 136, 0, 0, 0, 137, 0,
1297 0, 0, 0, 0, 0, 0, 0, 0, 124, 125,
1298 0, 0, 0, 0, 0, 0, 0, 126, 127, 0,
1299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1300 0, 124, 125, 0, 0, 128, 129, 0, 0, 0,
1301 126, 127, 66, 138, 0, 0, 139, 140, 141, 27,
1302 0, 0, 562, 0, 0, 564, 0, 131, 128, 129,
1303 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1304 204 136, 0, 27, 0, 137, 562, 0, 0, 564, 0,
1305 204 131, 0, 0, 0, 132, 133, 134, 135, 0, 0,
1306
2/2
✓ Branch 0 taken 61 times.
✓ Branch 1 taken 143 times.
204 0, 0, 0, 136, 0, 0, 0, 137, 0, 0,
1307 143 0, 0, 0, 0, 0, 0, 0, 124, 125, 0,
1308 204 0, 0, 0, 0, 0, 0, 126, 127, 66, 138,
1309 700, 0, 139, 140, 141, 0, 0, 124, 125, 0,
1310
2/6
✓ Branch 0 taken 20815 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20815 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
20815 0, 0, 0, 0, 128, 129, 126, 127, 0, 0,
1311 0, 66, 138, 726, 0, 139, 140, 141, 27, 0,
1312 0, 130, 402, 0, 128, 129, 131, 0, 0, 0,
1313 132, 133, 134, 135, 0, 0, 0, 0, 27, 136,
1314 0, 130, 527, 137, 0, 0, 131, 0, 0, 0,
1315 132, 133, 134, 135, 0, 0, 0, 0, 0, 136,
1316 0, 0, 0, 137, 0, 0, 0, 0, 0, 0,
1317 0, 0, 0, 124, 125, 0, 0, 0, 0, 0,
1318 21016 0, 0, 126, 127, 0, 0, 0, 66, 138, 0,
1319 21016 0, 139, 140, 141, 0, 0, 0, 0, 0, 0,
1320
2/6
✓ Branch 0 taken 21016 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21016 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
21016 128, 129, 0, 0, 0, 0, 0, 66, 138, 124,
1321 125, 139, 140, 141, 27, 0, 0, 130, 126, 127,
1322 0, 0, 131, 445, 0, 0, 132, 133, 134, 135,
1323 0, 0, 0, 0, 0, 136, 128, 129, 0, 137,
1324 3 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1325 3 27, 124, 125, 562, 0, 0, 564, 0, 131, 0,
1326
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 126, 127, 132, 133, 134, 135, 0, 0, 0, 0,
1327 0, 136, 0, 0, 0, 137, 0, 0, 128, 129,
1328 0, 0, 0, 66, 138, 0, 0, 139, 140, 141,
1329 0, 0, 27, 0, 0, 130, 0, 0, 0, 0,
1330 131, 684, 124, 125, 132, 133, 134, 135, 0, 0,
1331 0, 126, 127, 136, 0, 0, 0, 137, 0, 66,
1332 138, 0, 0, 139, 140, 141, 0, 0, 0, 128,
1333 129, 0, 124, 125, 0, 0, 0, 0, 0, 0,
1334 0, 126, 127, 27, 0, 0, 130, 0, 0, 0,
1335 0, 131, 0, 0, 0, 132, 133, 134, 135, 128,
1336 0, 66, 138, 0, 136, 139, 140, 141, 137, 0,
1337 0, 0, 0, 27, 0, 0, 130, 0, 0, 0,
1338 0, 131, 0, 0, 0, 132, 133, 134, 135, 0,
1339 0, 0, 0, 0, 136, 0, 0, 0, 137, 0,
1340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1341 0, 0, 66, 138, 0, 0, 139, 140, 141, 0,
1342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1343 0, 7, 0, 8, 208, 0, 0, 0, 10, 0,
1344 12, 0, 66, 138, 0, 0, 139, 140, 141, 14,
1345 209, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1346 23, 24, 25, 26, 0, 0, 7, 27, 8, 208,
1347 0, 0, 0, 10, 0, 12, 210, 0, 0, 0,
1348 0, 0, 211, 0, 14, 209, 16, 17, 0, 0,
1349 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1350 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1351 0, 387, 0, 0, 0, 0, 0, 211, 0, 0,
1352 0, 7, 0, 8, 513, 0, 0, 0, 10, 28,
1353 12, 0, 212, 0, 0, 0, 66, 0, 0, 14,
1354 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1355 23, 24, 25, 26, 0, 0, 7, 27, 8, 208,
1356 0, 0, 0, 10, 28, 12, 591, 212, 0, 0,
1357 0, 66, 0, 0, 14, 15, 16, 17, 0, 0,
1358 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1359 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1360 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
1361 1140521 0, 8, 513, 0, 0, 0, 10, 0, 12, 28,
1362
3/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1140521 times.
✓ Branch 2 taken 399206 times.
✓ Branch 3 taken 741315 times.
1140521 0, 0, 212, 0, 0, 0, 66, 14, 15, 16,
1363 17, 0, 0, 18, 19, 20, 21, 22, 23, 24,
1364 399206 25, 26, 0, 0, 0, 27, 0, 0, 0, 0,
1365 399206 0, 0, 0, 0, 28, 0, 0, 0, 0, 0,
1366 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
1367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1368
2/6
✓ Branch 0 taken 741315 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 741315 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
741315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1370 0, 0, 0, 0, 0, 0, 0, 28, 0, 0,
1371 0, 0, 0, 0, 66
1372 };
1373
1374 static const yytype_int16 yycheck[] =
1375 {
1376 2, 2, 234, 41, 2, 7, 8, 100, 2, 85,
1377 457823 292, 220, 14, 15, 16, 17, 2, 15, 51, 266,
1378 2, 2, 2, 2, 2, 475, 193, 371, 41, 521,
1379 833 476, 180, 175, 26, 475, 475, 475, 11, 11, 41,
1380 11, 627, 475, 2, 475, 76, 509, 2, 31, 32,
1381 33, 475, 55, 60, 54, 14, 288, 16, 17, 52,
1382 1421220 6, 2, 59, 54, 565, 51, 79, 55, 475, 71,
1383 447519 60, 678, 60, 26, 59, 475, 78, 79, 664, 76,
1384 761487 26, 2, 55, 60, 61, 132, 133, 134, 135, 136,
1385 41702 58, 60, 60, 59, 64, 52, 0, 16, 52, 52,
1386 153082 707, 52, 76, 76, 10, 11, 52, 183, 184, 185,
1387 1 64, 612, 188, 64, 91, 34, 21, 124, 63, 121,
1388 6446 121, 124, 585, 121, 52, 82, 128, 121, 125, 129,
1389 598 716, 124, 129, 130, 124, 137, 124, 2, 129, 122,
1390 125, 58, 121, 8, 287, 65, 91, 178, 186, 14,
1391 1133926 15, 16, 17, 124, 124, 124, 124, 306, 64, 125,
1392
2/6
✓ Branch 0 taken 100325 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100325 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
100325 209, 58, 121, 91, 124, 611, 121, 60, 61, 89,
1393 662, 220, 27, 340, 176, 176, 28, 627, 176, 124,
1394 1 121, 58, 176, 80, 351, 127, 627, 627, 627, 82,
1395
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 124, 193, 225, 195, 627, 641, 627, 176, 211, 246,
1396 121, 83, 84, 627, 178, 178, 71, 209, 90, 211,
1397 53, 209, 55, 78, 664, 447, 3, 176, 220, 220,
1398
2/6
✓ Branch 0 taken 22297 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22297 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
22297 627, 176, 220, 664, 664, 664, 220, 627, 110, 52,
1399 54, 664, 53, 664, 55, 176, 54, 58, 56, 62,
1400 664, 220, 52, 75, 76, 63, 284, 52, 324, 59,
1401 57, 58, 59, 60, 59, 176, 121, 664, 53, 80,
1402 55, 220, 52, 52, 664, 220, 716, 74, 75, 59,
1403 59, 52, 137, 124, 52, 716, 716, 716, 59, 220,
1404
2/6
✓ Branch 0 taken 8207 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8207 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8207 282, 59, 54, 716, 282, 716, 630, 54, 282, 536,
1405 292, 292, 716, 53, 292, 55, 282, 54, 292, 220,
1406 282, 282, 282, 282, 282, 381, 77, 78, 346, 716,
1407 52, 176, 3, 292, 61, 348, 716, 59, 600, 66,
1408 67, 68, 52, 282, 400, 60, 54, 282, 63, 59,
1409 195, 333, 59, 292, 63, 62, 338, 292, 340, 59,
1410 338, 282, 62, 54, 209, 79, 80, 81, 82, 351,
1411 133698 351, 292, 54, 14, 15, 220, 105, 106, 107, 108,
1412 109, 282, 23, 24, 254, 255, 256, 257, 53, 371,
1413 55, 292, 124, 449, 72, 73, 74, 379, 379, 129,
1414 130, 379, 475, 56, 57, 379, 595, 258, 259, 260,
1415 164590 261, 31, 32, 33, 55, 63, 472, 58, 63, 401,
1416 379, 55, 63, 44, 45, 46, 47, 48, 49, 50,
1417 51, 27, 488, 58, 55, 491, 58, 282, 127, 80,
1418 379, 247, 248, 249, 379, 10, 11, 292, 250, 251,
1419 127, 69, 252, 253, 52, 124, 117, 124, 379, 58,
1420 71, 58, 85, 58, 58, 58, 125, 85, 87, 86,
1421 59, 63, 88, 685, 11, 58, 122, 54, 379, 19,
1422 54, 54, 629, 124, 125, 54, 54, 128, 129, 130,
1423 127, 124, 58, 475, 476, 477, 59, 475, 38, 58,
1424 124, 475, 54, 124, 44, 45, 46, 47, 48, 49,
1425 50, 51, 130, 131, 59, 55, 475, 125, 54, 501,
1426 54, 54, 54, 54, 59, 52, 371, 509, 58, 58,
1427 586, 678, 58, 121, 379, 121, 121, 121, 58, 521,
1428 521, 121, 121, 521, 58, 58, 58, 521, 58, 54,
1429 54, 54, 54, 8, 627, 54, 54, 54, 54, 59,
1430 707, 62, 521, 710, 59, 183, 184, 185, 59, 56,
1431 188, 189, 127, 59, 59, 54, 54, 54, 725, 54,
1432 19, 563, 521, 59, 124, 58, 521, 58, 54, 54,
1433 54, 664, 54, 54, 62, 54, 59, 91, 52, 59,
1434 521, 129, 59, 585, 129, 44, 45, 46, 47, 48,
1435 49, 50, 51, 595, 59, 59, 55, 595, 600, 675,
1436
2/6
✓ Branch 0 taken 7846 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7846 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7846 521, 595, 600, 241, 242, 59, 600, 58, 58, 82,
1437 59, 476, 477, 59, 59, 52, 595, 619, 59, 621,
1438 622, 600, 624, 716, 63, 627, 628, 629, 630, 627,
1439 59, 63, 708, 627, 54, 59, 595, 59, 8, 8,
1440 595, 600, 8, 59, 509, 600, 105, 59, 627, 8,
1441 1162234 56, 91, 8, 8, 595, 8, 521, 59, 56, 600,
1442
2/6
✓ Branch 0 taken 210 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 210 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
210 662, 56, 664, 665, 662, 124, 664, 669, 662, 671,
1443 664, 673, 674, 56, 595, 56, 678, 679, 8, 600,
1444 682, 59, 56, 662, 56, 664, 324, 282, 56, 7,
1445 630, 329, 501, 220, 696, 62, 106, 41, 348, 262,
1446 396, 336, 340, 662, 263, 707, 401, 662, 710, 710,
1447 1864158 712, 713, 677, 708, 716, 717, 718, 719, 716, 19,
1448 1864158 585, 662, 716, 725, 725, 264, 70, 265, 129, -1,
1449 1864158 595, 267, 663, -1, 736, 600, -1, 716, 740, -1,
1450 1864158 -1, 662, -1, 381, 44, 45, 46, 47, 48, 49,
1451 50, 51, -1, -1, 563, 55, -1, -1, 396, -1,
1452 398, -1, 400, 19, -1, 630, -1, -1, 112, 113,
1453 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
1454 -1, 37, 38, 39, 40, -1, -1, -1, 44, 45,
1455 46, 47, 48, 49, 50, 51, -1, 662, -1, 55,
1456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1457 619, 449, 621, 622, -1, 624, -1, -1, -1, 628,
1458 -1, -1, -1, -1, 124, -1, -1, -1, -1, -1,
1459 1550788 -1, 175, -1, -1, 472, -1, -1, -1, 476, 477,
1460
2/6
✓ Branch 0 taken 1550788 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1550788 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1550788 -1, 479, 186, 481, -1, -1, -1, -1, -1, -1,
1461 488, 489, 196, 491, -1, -1, 665, -1, -1, -1,
1462 669, -1, 671, -1, 673, 674, -1, -1, 124, -1,
1463 679, -1, 510, 682, 91, 92, 93, 94, 95, 96,
1464 6643 97, 98, 99, 100, 101, 102, 103, 696, -1, -1,
1465
2/6
✓ Branch 0 taken 6643 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6643 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6643 -1, -1, -1, -1, -1, 533, 113, -1, -1, -1,
1466 -1, -1, 11, 712, 713, 14, 15, -1, 717, 718,
1467 719, -1, -1, -1, 23, 24, -1, -1, -1, -1,
1468 -1, -1, -1, -1, 562, -1, 564, 736, -1, -1,
1469 -1, 740, 41, 42, -1, -1, -1, -1, -1, -1,
1470 284, -1, -1, 287, -1, -1, 55, -1, 586, 58,
1471 718695 -1, -1, -1, -1, 63, -1, -1, -1, 67, 68,
1472 69, 70, -1, -1, -1, -1, 604, 76, -1, 607,
1473 42792 -1, 80, -1, 611, -1, 613, 614, 615, 616, 617,
1474 42792 618, -1, -1, -1, -1, -1, -1, 625, 626, -1,
1475 42792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1476 638, 639, 346, 641, -1, -1, -1, -1, 3, 4,
1477 -1, 649, -1, -1, 123, 124, 125, -1, -1, 128,
1478 129, 130, -1, -1, 19, 663, 21, 22, 372, -1,
1479 668, 26, 27, 28, -1, -1, -1, 675, -1, -1,
1480 -1, -1, 37, 38, 39, 40, -1, -1, 43, 44,
1481 17 45, 46, 47, 48, 49, 50, 51, 695, -1, -1,
1482 17 55, -1, 5, 6, 7, -1, 9, 10, 11, 12,
1483
2/6
✓ Branch 0 taken 17 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
17 708, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1484 23, 24, -1, 26, -1, 28, -1, -1, -1, -1,
1485 -1, 34, 35, 36, -1, 38, -1, -1, 41, 42,
1486 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1487 -1, 54, 55, -1, -1, 58, -1, -1, -1, -1,
1488 63, -1, 117, -1, 67, 68, 69, 70, -1, 124,
1489 -1, 475, 19, 76, -1, -1, -1, 80, -1, -1,
1490 542566 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1491 542566 37, 38, 39, 40, -1, -1, -1, 44, 45, 46,
1492
2/6
✓ Branch 0 taken 542566 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 542566 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
542566 47, 48, 49, 50, 51, -1, -1, 511, 55, -1,
1493 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1494 218904 -1, 124, 125, -1, -1, 128, 129, 130, -1, -1,
1495 218904 5, 6, 7, -1, 9, -1, -1, 12, -1, 14,
1496 218904 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1497
2/6
✓ Branch 0 taken 218904 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 218904 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
218904 -1, 26, -1, 28, -1, -1, -1, -1, -1, 34,
1498 35, 36, -1, 38, -1, 569, 41, 42, 43, 44,
1499 45, 46, 47, 48, 49, 50, 51, 124, -1, 54,
1500 55, -1, -1, 58, -1, -1, -1, -1, 63, 64,
1501 -1, -1, 67, 68, 69, 70, -1, -1, 19, -1,
1502 41702 -1, 76, -1, -1, -1, 80, -1, -1, -1, -1,
1503 41702 -1, -1, -1, -1, -1, -1, 37, 38, 39, 40,
1504 41702 -1, -1, -1, 44, 45, 46, 47, 48, 49, 50,
1505 41702 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
1506 -1, -1, 117, -1, -1, 120, -1, -1, -1, 124,
1507 125, -1, -1, 128, 129, 130, 5, 6, 7, -1,
1508 9, -1, -1, 12, -1, 14, 15, 16, 17, 18,
1509 353447 19, 20, 21, 22, 23, 24, -1, 26, -1, 28,
1510 353447 -1, -1, -1, -1, -1, 34, 35, 36, -1, 38,
1511 353447 -1, -1, 41, 42, 43, 44, 45, 46, 47, 48,
1512 353447 49, 50, 51, 124, -1, 54, 55, -1, -1, 58,
1513 353447 -1, -1, -1, -1, 63, 64, -1, -1, 67, 68,
1514 353447 69, 70, -1, -1, -1, -1, -1, 76, -1, -1,
1515 -1, 80, 268, 269, 270, 271, 272, 273, 274, 275,
1516
2/6
✓ Branch 0 taken 41702 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41702 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41702 276, 277, 278, 279, 280, 281, -1, -1, -1, -1,
1517 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1518 -1, -1, -1, -1, -1, -1, -1, -1, 117, -1,
1519 -1, 120, -1, -1, -1, 124, 125, -1, -1, 128,
1520 129, 130, 5, 6, 7, -1, 9, -1, -1, 12,
1521 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1522 23, 24, -1, 26, -1, 28, -1, -1, -1, -1,
1523 -1, 34, 35, 36, -1, 38, -1, -1, 41, 42,
1524 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1525 -1, 54, 55, -1, -1, 58, -1, -1, -1, -1,
1526 21905 63, -1, -1, -1, 67, 68, 69, 70, -1, -1,
1527 21905 -1, -1, -1, 76, -1, -1, -1, 80, -1, -1,
1528 21905 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1529 21905 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1530 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1531 1661 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1532 1661 -1, 124, 125, -1, -1, 128, 129, 130, 5, 6,
1533 1661 7, -1, 9, -1, -1, 12, -1, 14, 15, 16,
1534 17, 18, 19, 20, 21, 22, 23, 24, -1, 26,
1535 834 -1, 28, -1, -1, -1, -1, -1, 34, 35, 36,
1536 834 -1, 38, -1, -1, 41, 42, 43, 44, 45, 46,
1537 834 47, 48, 49, 50, 51, -1, -1, 54, 55, -1,
1538 834 -1, 58, -1, -1, -1, -1, 63, -1, -1, -1,
1539 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1540 -1, -1, -1, 80, -1, 19, -1, 21, 22, -1,
1541 -1, -1, 26, -1, 28, -1, -1, -1, -1, -1,
1542 -1, -1, -1, 37, 38, 39, 40, -1, -1, 43,
1543 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1544 117, 55, -1, -1, -1, -1, -1, 124, 125, -1,
1545 64, 128, 129, 130, 5, 6, 7, -1, 9, -1,
1546 -1, 12, -1, 14, 15, 16, 17, 18, 19, 20,
1547
2/6
✓ Branch 0 taken 363535 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 363535 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
363535 21, 22, 23, 24, -1, 26, -1, -1, -1, -1,
1548 -1, -1, -1, 34, 35, -1, -1, 38, -1, -1,
1549 41, 42, -1, 44, 45, 46, 47, 48, 49, 50,
1550 51, -1, -1, 117, 55, -1, 120, 58, -1, -1,
1551 124, -1, 63, -1, -1, -1, 67, 68, 69, 70,
1552
2/6
✓ Branch 0 taken 1658 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1658 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1658 -1, -1, -1, -1, -1, 76, -1, -1, -1, 80,
1553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1554 -1, -1, -1, -1, -1, -1, 3, 4, -1, -1,
1555 -1, -1, -1, -1, -1, -1, 13, -1, -1, -1,
1556 -1, -1, 19, -1, 21, 22, 117, -1, -1, 26,
1557 27, 28, 29, 124, 125, -1, -1, 128, 129, 130,
1558 37, 38, 39, 40, -1, -1, 43, 44, 45, 46,
1559 47, 48, 49, 50, 51, 3, 4, -1, 55, -1,
1560 -1, -1, -1, -1, -1, 13, -1, -1, -1, -1,
1561 -1, 19, -1, 21, 22, -1, -1, -1, 26, 27,
1562 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
1563 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1564
2/6
✓ Branch 0 taken 29956 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 29956 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
29956 48, 49, 50, 51, -1, -1, -1, 55, -1, -1,
1565 3, 4, -1, -1, -1, -1, -1, -1, -1, -1,
1566 117, -1, -1, 120, -1, -1, 19, 124, 21, 22,
1567 -1, -1, -1, 26, 27, 28, -1, -1, -1, -1,
1568 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1569 43, 44, 45, 46, 47, 48, 49, 50, 51, 3,
1570 153064 4, -1, 55, -1, -1, -1, -1, -1, -1, 117,
1571 18 -1, 64, 120, -1, -1, 19, 124, 21, 22, -1,
1572 -1, -1, 26, 27, 28, 11, -1, -1, 14, 15,
1573 -1, -1, -1, 37, 38, 39, 40, 23, 24, 43,
1574 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1575 -1, 55, -1, -1, -1, 41, 42, -1, -1, -1,
1576 64, -1, -1, -1, 117, -1, -1, 120, -1, 55,
1577 -1, 124, 58, -1, -1, -1, -1, 63, -1, -1,
1578 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1579 76, -1, -1, -1, 80, -1, -1, -1, -1, -1,
1580 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1581
1/2
✓ Branch 0 taken 153067 times.
✗ Branch 1 not taken.
153067 -1, -1, -1, 117, -1, -1, 120, -1, 14, 15,
1582 124, -1, -1, 19, -1, -1, -1, 23, 24, -1,
1583 -1, -1, -1, -1, -1, -1, -1, 123, 124, 125,
1584 -1, -1, 128, 129, 130, 41, 42, -1, 44, 45,
1585 46, 47, 48, 49, 50, 51, -1, -1, -1, 55,
1586 -1, -1, 58, 59, -1, 61, -1, 63, -1, -1,
1587 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1588 76, -1, 14, 15, 80, -1, -1, 19, -1, -1,
1589 -1, 23, 24, -1, -1, -1, -1, -1, -1, -1,
1590 -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
1591 42, -1, 44, 45, 46, 47, 48, 49, 50, 51,
1592 -1, -1, -1, 55, -1, -1, 58, -1, 124, 125,
1593 -1, 63, 128, 129, 130, 67, 68, 69, 70, -1,
1594 153063 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1595 153063 -1, -1, -1, -1, -1, -1, -1, -1, 14, 15,
1596 153063 -1, -1, -1, -1, -1, -1, -1, 23, 24, -1,
1597 153063 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1598
2/6
✓ Branch 0 taken 153063 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 153063 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
153063 -1, 14, 15, -1, -1, 41, 42, -1, -1, -1,
1599 23, 24, 124, 125, -1, -1, 128, 129, 130, 55,
1600 -1, -1, 58, -1, -1, 61, -1, 63, 41, 42,
1601 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1602 76, -1, 55, -1, 80, 58, -1, -1, 61, -1,
1603 63, -1, -1, -1, 67, 68, 69, 70, -1, -1,
1604 -1, -1, -1, 76, -1, -1, -1, 80, -1, -1,
1605 -1, -1, -1, -1, -1, -1, -1, 14, 15, -1,
1606 1 -1, -1, -1, -1, -1, -1, 23, 24, 124, 125,
1607 1 126, -1, 128, 129, 130, -1, -1, 14, 15, -1,
1608 1 -1, -1, -1, -1, 41, 42, 23, 24, -1, -1,
1609 1 -1, 124, 125, 126, -1, 128, 129, 130, 55, -1,
1610 1 -1, 58, 59, -1, 41, 42, 63, -1, -1, -1,
1611
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 67, 68, 69, 70, -1, -1, -1, -1, 55, 76,
1612 -1, 58, 59, 80, -1, -1, 63, -1, -1, -1,
1613 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1614 -1, -1, -1, 80, -1, -1, -1, -1, -1, -1,
1615 -1, -1, -1, 14, 15, -1, -1, -1, -1, -1,
1616 -1, -1, 23, 24, -1, -1, -1, 124, 125, -1,
1617 -1, 128, 129, 130, -1, -1, -1, -1, -1, -1,
1618 41, 42, -1, -1, -1, -1, -1, 124, 125, 14,
1619 18 15, 128, 129, 130, 55, -1, -1, 58, 23, 24,
1620 18 -1, -1, 63, 64, -1, -1, 67, 68, 69, 70,
1621 18 -1, -1, -1, -1, -1, 76, 41, 42, -1, 80,
1622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1623
2/6
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
18 55, 14, 15, 58, -1, -1, 61, -1, 63, -1,
1624 23, 24, 67, 68, 69, 70, -1, -1, -1, -1,
1625 -1, 76, -1, -1, -1, 80, -1, -1, 41, 42,
1626 -1, -1, -1, 124, 125, -1, -1, 128, 129, 130,
1627 -1, -1, 55, -1, -1, 58, -1, -1, -1, -1,
1628 63, 64, 14, 15, 67, 68, 69, 70, -1, -1,
1629 -1, 23, 24, 76, -1, -1, -1, 80, -1, 124,
1630 125, -1, -1, 128, 129, 130, -1, -1, -1, 41,
1631 42, -1, 14, 15, -1, -1, -1, -1, -1, -1,
1632 -1, 23, 24, 55, -1, -1, 58, -1, -1, -1,
1633 -1, 63, -1, -1, -1, 67, 68, 69, 70, 41,
1634 -1, 124, 125, -1, 76, 128, 129, 130, 80, -1,
1635 -1, -1, -1, 55, -1, -1, 58, -1, -1, -1,
1636 -1, 63, -1, -1, -1, 67, 68, 69, 70, -1,
1637 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1639 -1, -1, 124, 125, -1, -1, 128, 129, 130, -1,
1640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1641 -1, 19, -1, 21, 22, -1, -1, -1, 26, -1,
1642 28, -1, 124, 125, -1, -1, 128, 129, 130, 37,
1643 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1644 48, 49, 50, 51, -1, -1, 19, 55, 21, 22,
1645 -1, -1, -1, 26, -1, 28, 64, -1, -1, -1,
1646 -1, -1, 70, -1, 37, 38, 39, 40, -1, -1,
1647 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1648 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
1649 -1, 64, -1, -1, -1, -1, -1, 70, -1, -1,
1650 -1, 19, -1, 21, 22, -1, -1, -1, 26, 117,
1651 28, -1, 120, -1, -1, -1, 124, -1, -1, 37,
1652 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1653 48, 49, 50, 51, -1, -1, 19, 55, 21, 22,
1654 -1, -1, -1, 26, 117, 28, 64, 120, -1, -1,
1655 -1, 124, -1, -1, 37, 38, 39, 40, -1, -1,
1656 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1657 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
1658 -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
1659 -1, 21, 22, -1, -1, -1, 26, -1, 28, 117,
1660 -1, -1, 120, -1, -1, -1, 124, 37, 38, 39,
1661 40, -1, -1, 43, 44, 45, 46, 47, 48, 49,
1662 1 50, 51, -1, -1, -1, 55, -1, -1, -1, -1,
1663 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1,
1664 -1, 124, -1, -1, -1, -1, -1, -1, -1, -1,
1665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1666 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1667 1 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1668 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
1669 -1, -1, -1, -1, 124
1670 };
1671
1672 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1673 state STATE-NUM. */
1674 static const yytype_uint8 yystos[] =
1675 {
1676 0, 132, 133, 0, 3, 4, 13, 19, 21, 22,
1677 26, 27, 28, 29, 37, 38, 39, 40, 43, 44,
1678 45, 46, 47, 48, 49, 50, 51, 55, 117, 120,
1679 124, 134, 136, 139, 140, 141, 142, 143, 144, 145,
1680 146, 147, 148, 149, 150, 151, 158, 167, 174, 175,
1681 176, 180, 181, 207, 208, 210, 211, 213, 214, 215,
1682 216, 217, 21, 124, 166, 127, 124, 149, 147, 58,
1683 63, 91, 124, 212, 214, 216, 27, 28, 38, 147,
1684 158, 151, 158, 158, 158, 58, 124, 31, 32, 33,
1685 122, 54, 54, 54, 54, 60, 152, 153, 154, 159,
1686 1 160, 211, 217, 54, 54, 3, 52, 124, 175, 208,
1687 54, 216, 53, 210, 53, 210, 53, 210, 53, 210,
1688 176, 63, 168, 124, 14, 15, 23, 24, 41, 42,
1689 58, 63, 67, 68, 69, 70, 76, 80, 125, 128,
1690 129, 130, 211, 218, 219, 221, 222, 223, 224, 225,
1691 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
1692 236, 237, 238, 239, 240, 242, 245, 246, 247, 248,
1693 249, 153, 209, 217, 147, 63, 63, 212, 27, 242,
1694 58, 127, 127, 58, 11, 124, 52, 60, 61, 91,
1695 156, 54, 56, 63, 185, 58, 80, 124, 181, 217,
1696 217, 217, 217, 217, 217, 217, 217, 124, 22, 38,
1697 64, 70, 120, 139, 143, 144, 145, 151, 158, 159,
1698 169, 170, 171, 172, 173, 180, 207, 211, 58, 58,
1699 211, 238, 240, 240, 250, 225, 225, 225, 225, 225,
1700 147, 58, 61, 66, 67, 68, 71, 72, 73, 74,
1701
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1702 90, 110, 85, 86, 87, 88, 65, 89, 91, 92,
1703 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1704 103, 113, 59, 125, 52, 64, 135, 63, 209, 22,
1705 64, 136, 137, 138, 139, 143, 144, 145, 150, 151,
1706 158, 167, 174, 175, 207, 212, 52, 59, 59, 76,
1707 129, 130, 246, 242, 11, 123, 242, 11, 123, 242,
1708 153, 157, 242, 240, 11, 5, 6, 7, 9, 12,
1709 16, 17, 18, 20, 22, 34, 35, 36, 38, 54,
1710 63, 64, 139, 143, 144, 145, 147, 151, 180, 183,
1711 185, 186, 187, 189, 192, 194, 195, 196, 197, 198,
1712 199, 200, 202, 203, 204, 205, 206, 207, 211, 240,
1713 241, 105, 147, 162, 163, 164, 165, 161, 217, 63,
1714 177, 58, 170, 159, 54, 54, 54, 64, 143, 170,
1715 171, 173, 54, 54, 124, 127, 58, 59, 52, 135,
1716 61, 82, 59, 220, 240, 240, 124, 225, 226, 226,
1717 226, 227, 227, 228, 228, 229, 229, 229, 229, 230,
1718 230, 230, 230, 231, 232, 233, 234, 237, 235, 239,
1719 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1720 239, 239, 239, 120, 134, 64, 153, 209, 135, 58,
1721 64, 138, 143, 54, 54, 54, 54, 54, 54, 246,
1722 129, 130, 59, 59, 59, 52, 121, 121, 121, 121,
1723 121, 121, 52, 62, 242, 58, 58, 58, 188, 58,
1724 240, 58, 54, 129, 54, 129, 182, 183, 58, 58,
1725 188, 58, 240, 54, 54, 54, 54, 197, 64, 143,
1726 183, 8, 54, 54, 54, 54, 163, 217, 59, 52,
1727 91, 52, 82, 22, 64, 139, 143, 144, 145, 151,
1728 158, 178, 179, 207, 242, 59, 59, 59, 220, 240,
1729 242, 211, 222, 52, 59, 62, 56, 135, 242, 59,
1730 59, 59, 127, 242, 54, 17, 18, 145, 151, 184,
1731 185, 187, 189, 192, 196, 202, 203, 205, 206, 207,
1732 217, 241, 58, 59, 61, 124, 147, 240, 244, 147,
1733 155, 240, 240, 240, 54, 54, 16, 34, 242, 240,
1734 242, 182, 162, 240, 217, 58, 58, 54, 54, 54,
1735 54, 64, 143, 179, 54, 59, 59, 62, 240, 237,
1736 59, 59, 129, 129, 54, 56, 57, 201, 240, 182,
1737 240, 201, 124, 105, 106, 107, 108, 109, 52, 59,
1738 217, 59, 59, 59, 59, 58, 58, 59, 59, 59,
1739 52, 162, 242, 173, 82, 138, 240, 240, 52, 52,
1740 244, 201, 240, 240, 240, 240, 240, 240, 182, 91,
1741 182, 182, 63, 182, 240, 240, 184, 182, 183, 163,
1742 164, 59, 59, 63, 54, 59, 240, 240, 52, 59,
1743 244, 59, 240, 8, 8, 10, 11, 190, 191, 8,
1744 59, 59, 8, 179, 64, 250, 184, 193, 182, 59,
1745 19 62, 59, 62, 240, 182, 52, 59, 182, 182, 182,
1746 126, 240, 242, 243, 244, 56, 64, 191, 10, 11,
1747 186, 182, 8, 8, 182, 135, 52, 59, 8, 59,
1748 240, 182, 56, 56, 56, 186, 126, 242, 243, 56,
1749 182, 182, 184, 182, 182, 182, 59, 56, 56, 56,
1750 8, 182, 182
1751 6440 };
1752 6440
1753
2/6
✓ Branch 0 taken 6440 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6440 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6440 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1754 static const yytype_uint8 yyr1[] =
1755 1 {
1756 1 0, 131, 132, 133, 133, 133, 134, 134, 134, 134,
1757 1 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1758
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 134, 135, 135, 136, 136, 137, 137, 137, 137, 138,
1759 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1760 5 138, 139, 140, 141, 141, 141, 142, 143, 143, 143,
1761 5 143, 143, 143, 144, 144, 145, 146, 147, 147, 148,
1762
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 148, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1763 150, 151, 151, 152, 152, 153, 153, 154, 154, 155,
1764 156, 156, 157, 157, 158, 158, 158, 158, 158, 159,
1765 159, 159, 160, 160, 161, 161, 162, 162, 162, 162,
1766 162, 163, 164, 164, 165, 166, 167, 168, 168, 169,
1767 169, 169, 169, 169, 169, 169, 169, 170, 170, 171,
1768 172, 173, 173, 173, 173, 173, 173, 173, 174, 175,
1769 176, 177, 177, 178, 178, 178, 178, 179, 179, 179,
1770 179, 179, 179, 179, 180, 180, 181, 181, 181, 181,
1771 181, 181, 182, 183, 183, 183, 183, 183, 183, 183,
1772 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1773 183, 183, 183, 183, 184, 184, 184, 184, 184, 184,
1774 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1775 184, 184, 185, 185, 186, 186, 186, 186, 187, 187,
1776 592 188, 188, 188, 188, 189, 190, 190, 191, 191, 191,
1777 592 191, 191, 191, 191, 191, 192, 192, 193, 193, 194,
1778
2/6
✓ Branch 0 taken 592 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 592 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
592 194, 195, 195, 196, 196, 197, 197, 198, 199, 199,
1779 200, 200, 200, 200, 200, 200, 201, 201, 202, 202,
1780 202, 202, 203, 203, 203, 203, 204, 205, 205, 206,
1781 207, 207, 208, 208, 208, 209, 209, 210, 211, 211,
1782 211, 211, 212, 212, 213, 213, 213, 213, 214, 214,
1783 214, 215, 215, 216, 217, 218, 218, 219, 219, 219,
1784 219, 220, 220, 221, 221, 221, 222, 222, 223, 224,
1785 6 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
1786 6 225, 226, 226, 227, 227, 227, 227, 228, 228, 228,
1787
2/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6 229, 229, 229, 230, 230, 230, 230, 230, 231, 231,
1788 231, 231, 231, 232, 232, 233, 233, 234, 234, 235,
1789 235, 236, 236, 237, 237, 238, 238, 239, 239, 239,
1790 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1791 239, 239, 240, 241, 242, 243, 244, 244, 244, 244,
1792 244, 244, 244, 244, 244, 245, 245, 245, 245, 245,
1793 245, 245, 245, 246, 246, 247, 248, 248, 249, 249,
1794 249, 250, 250
1795 };
1796
1797 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1798 static const yytype_int8 yyr2[] =
1799 {
1800 0, 2, 1, 2, 2, 0, 1, 1, 1, 2,
1801 2, 2, 1, 1, 1, 1, 2, 2, 2, 2,
1802 5, 2, 1, 4, 5, 2, 2, 1, 1, 1,
1803 2, 2, 2, 1, 1, 1, 1, 2, 2, 2,
1804 5, 3, 4, 2, 3, 7, 3, 5, 5, 5,
1805 5, 5, 5, 4, 6, 1, 3, 2, 1, 2,
1806 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1807 4, 2, 2, 3, 1, 3, 1, 2, 1, 4,
1808 1096261 3, 1, 3, 1, 2, 2, 2, 2, 2, 2,
1809
2/6
✓ Branch 0 taken 1096261 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1096261 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1096261 2, 5, 4, 7, 1, 3, 3, 1, 1, 1,
1810
2/6
✓ Branch 0 taken 37666 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 37666 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
37666 0, 2, 5, 3, 2, 1, 3, 3, 2, 2,
1811 2, 2, 2, 1, 1, 1, 1, 2, 1, 2,
1812 1, 2, 1, 2, 2, 2, 2, 5, 2, 4,
1813 1, 3, 2, 2, 2, 1, 1, 2, 1, 2,
1814 2, 2, 2, 5, 3, 1, 5, 5, 5, 6,
1815 6, 4, 1, 2, 2, 2, 2, 2, 1, 1,
1816 1, 1, 1, 1, 1, 1, 2, 2, 3, 2,
1817 3, 1, 2, 2, 1, 1, 1, 1, 1, 1,
1818 1, 1, 1, 1, 1, 1, 1, 2, 1, 2,
1819 0, 1, 3, 2, 2, 2, 1, 1, 2, 2,
1820 4, 6, 4, 6, 7, 3, 2, 4, 3, 4,
1821 4, 3, 3, 3, 2, 1, 1, 3, 1, 9,
1822 11, 7, 9, 2, 1, 1, 1, 4, 3, 1,
1823 20767 10, 9, 7, 8, 7, 5, 1, 1, 5, 7,
1824
1/2
✓ Branch 0 taken 20767 times.
✗ Branch 1 not taken.
20767 5, 7, 6, 8, 6, 8, 5, 2, 1, 5,
1825
1/2
✓ Branch 0 taken 20767 times.
✗ Branch 1 not taken.
20767 2, 1, 4, 6, 5, 3, 1, 1, 1, 1,
1826
2/2
✓ Branch 0 taken 20766 times.
✓ Branch 1 taken 1 times.
20767 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
1827
2/2
✓ Branch 0 taken 20766 times.
✓ Branch 1 taken 1 times.
20767 2, 3, 3, 1, 1, 1, 1, 4, 5, 3,
1828
1/2
✓ Branch 0 taken 20767 times.
✗ Branch 1 not taken.
20767 4, 3, 1, 1, 1, 3, 1, 4, 3, 1,
1829 2, 2, 1, 4, 1, 1, 2, 2, 2, 2,
1830 2, 1, 3, 1, 3, 3, 3, 1, 3, 3,
1831 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
1832 3, 3, 3, 1, 3, 1, 3, 1, 3, 1,
1833 3, 1, 3, 1, 5, 1, 2, 1, 3, 3,
1834 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1835 3, 3, 1, 1, 1, 1, 3, 3, 3, 3,
1836 3, 5, 5, 5, 5, 1, 1, 1, 1, 1,
1837 1, 4, 4, 2, 1, 1, 1, 1, 9, 8,
1838 3, 3, 1
1839 };
1840
1841
1842 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1843 static const yytype_int8 yydprec[] =
1844 {
1845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 150248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858 33679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1862 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1863 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1867 137335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868 137335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1869 137335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870
2/6
✓ Branch 0 taken 137335 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 137335 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
137335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1876 3183412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1877 3183412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1878 3183412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 3183412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1881 171015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1882
2/6
✓ Branch 0 taken 171015 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 171015 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
171015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1883 0, 0, 0
1884 };
1885
1886 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1887 static const yytype_int8 yymerger[] =
1888 {
1889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0
1928 };
1929
1930 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1931 in the case of predicates. */
1932 1225 static const yybool yyimmediate[] =
1933 {
1934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 1222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1940 11776972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 3 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1945 4239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1972 0, 0, 0
1973 };
1974
1975 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1976 list of conflicting reductions corresponding to action entry for
1977 state STATE-NUM in yytable. 0 means no conflicts. The list in
1978 yyconfl is terminated by a rule number of 0. */
1979 static const yytype_int8 yyconflp[] =
1980 {
1981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998 1225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1999 1225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 1225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001
2/4
✓ Branch 0 taken 1225 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1225 times.
✗ Branch 3 not taken.
1225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2010 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
2011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2012 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2018 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2021 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2022 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2023 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2024
2/4
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
15 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
2025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2032 11782451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2033
2/6
✓ Branch 0 taken 11782451 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11782451 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
23564902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2034 0, 0, 0, 11, 0, 0, 0, 0, 0, 0,
2035
2/2
✓ Branch 0 taken 6997350 times.
✓ Branch 1 taken 4785101 times.
11782451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 20583299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044 209702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 1171086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2050
2/6
✓ Branch 0 taken 381 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 381 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2057 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2059 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2060 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2061 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2062 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2064
2/6
✓ Branch 0 taken 72442 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72442 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
72442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2070 1308345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2071 1308345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2072 1308345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2073 1308345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2074 1308345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2079 1070929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2080 1070929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2081 1070929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2082 1070929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2083 1070929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2085
2/6
✓ Branch 0 taken 1308389 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1308389 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1308389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2096 8326887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2097 4956466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2098 1011327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2100 14294680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2111 7116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2112 7116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2113
2/6
✓ Branch 0 taken 7116 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7116 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2119 2373467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2120 2373467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2121
2/6
✓ Branch 0 taken 2373467 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2373467 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2373467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2124 14294680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2126
3/8
✓ Branch 0 taken 44156 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 44156 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 44156 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
44156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128
3/8
✓ Branch 0 taken 17243 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17243 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 17243 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
17243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2130 1381211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2133
3/8
✓ Branch 0 taken 592496 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 592496 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 592496 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1184992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2135 2163765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2138 15466189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2140
3/8
✓ Branch 0 taken 95519 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95519 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95519 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
95519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2142
3/8
✓ Branch 0 taken 43645 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 43645 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 43645 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
43645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144
3/8
✓ Branch 0 taken 274494 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 274494 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 274494 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
274494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2146
3/8
✓ Branch 0 taken 50527 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 50527 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 50527 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
50527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2148
3/8
✓ Branch 0 taken 7080 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7080 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7080 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
7080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2151 15466189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2156 15191414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2158
3/8
✓ Branch 0 taken 159408 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 159408 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 159408 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
318816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2160
3/8
✓ Branch 0 taken 66449 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 66449 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 66449 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
132898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2162
3/8
✓ Branch 0 taken 48918 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 48918 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 48918 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
97836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2165 14115376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2167
3/8
✓ Branch 0 taken 616334 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 616334 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 616334 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1232668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2169
3/8
✓ Branch 0 taken 459704 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 459704 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 459704 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
919408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 14026898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174
3/8
✓ Branch 0 taken 38894 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 38894 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 38894 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
77788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176
3/8
✓ Branch 0 taken 49584 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 49584 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 49584 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
99168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2179 13486744 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2181
3/8
✓ Branch 0 taken 227161 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 227161 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 227161 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
454322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183
3/8
✓ Branch 0 taken 63638 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63638 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63638 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
127276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2185
3/8
✓ Branch 0 taken 164666 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 164666 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 164666 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
329332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187
3/8
✓ Branch 0 taken 84689 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 84689 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 84689 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
169378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190 13086134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2192
3/8
✓ Branch 0 taken 314349 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 314349 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 314349 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
628698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2194
3/8
✓ Branch 0 taken 82114 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 82114 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 82114 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
164228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2198
3/8
✓ Branch 0 taken 4147 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4147 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4147 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2201 12986717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2203
3/8
✓ Branch 0 taken 99417 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 99417 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 99417 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
198834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2206 12982563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2208
3/8
✓ Branch 0 taken 4154 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4154 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4154 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2211 12975032 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2213
3/8
✓ Branch 0 taken 7531 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7531 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7531 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
15062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2216 12846239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2218
3/8
✓ Branch 0 taken 128793 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 128793 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 128793 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
257586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2221 12700324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223
3/8
✓ Branch 0 taken 145915 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 145915 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 145915 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
291830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2226 12548239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2230 152085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2231 152085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2232 152085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233
2/6
✓ Branch 0 taken 152085 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 152085 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
152085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2237 12396154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2239
2/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2245 11332746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2247
3/8
✓ Branch 0 taken 915058 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 915058 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 915058 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1830116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2250 72817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2251 72817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2252
3/10
✓ Branch 0 taken 72817 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72817 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 72817 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
145634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2255 20616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2256 20616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2257
3/10
✓ Branch 0 taken 20616 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20616 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 20616 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
41232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2260 4646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2261 4646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2262
3/10
✓ Branch 0 taken 4646 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4646 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4646 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
9292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2265 6423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2266 6423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2267
3/10
✓ Branch 0 taken 6423 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6423 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6423 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
12846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2270 1028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2271 1028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2272
3/10
✓ Branch 0 taken 1028 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1028 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1028 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2274 0, 0, 0, 0, 0
2275 8834 };
2276 8834
2277
3/10
✓ Branch 0 taken 8834 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8834 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8834 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
17668 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
2278 0, pointed into by YYCONFLP. */
2279 static const short yyconfl[] =
2280 {
2281 0, 258, 0, 259, 0, 260, 0, 261, 0, 72,
2282 0, 229, 0
2283 };
2284
2285 5178
2286 5178 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2287
3/10
✓ Branch 0 taken 5178 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5178 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5178 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10356 If N is 0, then set CURRENT to the empty location which ends
2288 the previous symbol: RHS[0] (always defined). */
2289
2290 #ifndef YYLLOC_DEFAULT
2291 9124 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2292 9124 do \
2293
3/10
✓ Branch 0 taken 9124 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9124 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9124 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
18248 if (N) \
2294 { \
2295 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2296 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2297 1375 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2298 1375 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2299
3/10
✓ Branch 0 taken 1375 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1375 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1375 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2750 } \
2300 else \
2301 { \
2302 18183 (Current).first_line = (Current).last_line = \
2303 18183 YYRHSLOC (Rhs, 0).last_line; \
2304
3/10
✓ Branch 0 taken 18183 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18183 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18183 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
36366 (Current).first_column = (Current).last_column = \
2305 YYRHSLOC (Rhs, 0).last_column; \
2306 } \
2307 125 while (0)
2308 125 #endif
2309
3/10
✓ Branch 0 taken 125 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 125 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 125 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
250
2310 # define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
2311
2312
2313 YYSTYPE yylval;
2314 YYLTYPE yylloc;
2315
2316 int yynerrs;
2317 11332746 int yychar;
2318
2319 enum { YYENOMEM = -2 };
2320
2321 1585811 typedef enum { yyok, yyaccept, yyabort, yyerr, yynomem } YYRESULTTAG;
2322 1585811
2323 1585811 #define YYCHK(YYE) \
2324 do { \
2325 YYRESULTTAG yychk_flag = YYE; \
2326 if (yychk_flag != yyok) \
2327 return yychk_flag; \
2328 424709 } while (0)
2329
2/6
✓ Branch 0 taken 424709 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 424709 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
424709
2330 /* YYINITDEPTH -- initial size of the parser's stacks. */
2331 #ifndef YYINITDEPTH
2332 # define YYINITDEPTH 200
2333 #endif
2334 2492
2335 2492 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2336
1/2
✓ Branch 0 taken 2492 times.
✗ Branch 1 not taken.
2492 if the built-in stack extension method is used).
2337
2338 Do not make this value too large; the results are undefined if
2339 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
2340 evaluated with infinite-precision integer arithmetic. */
2341
2342 #ifndef YYMAXDEPTH
2343 # define YYMAXDEPTH 10000
2344 #endif
2345 2492
2346 2492 /* Minimum number of free items on the stack allowed after an
2347
2/6
✓ Branch 0 taken 2492 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2492 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2492 allocation. This is to allow allocation and initialization
2348 to be completed by functions that call yyexpandGLRStack before the
2349 stack is expanded, thus insuring that all necessary pointers get
2350 properly redirected to new data. */
2351 #define YYHEADROOM 2
2352
2353 #ifndef YYSTACKEXPANDABLE
2354 # define YYSTACKEXPANDABLE 1
2355 #endif
2356
2357 #if YYSTACKEXPANDABLE
2358 # define YY_RESERVE_GLRSTACK(Yystack) \
2359 do { \
2360 1 if (Yystack->yyspaceLeft < YYHEADROOM) \
2361 1 yyexpandGLRStack (Yystack); \
2362
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 } while (0)
2363 #else
2364 # define YY_RESERVE_GLRSTACK(Yystack) \
2365 do { \
2366 if (Yystack->yyspaceLeft < YYHEADROOM) \
2367 yyMemoryExhausted (Yystack); \
2368 } while (0)
2369 #endif
2370
2371 /** State numbers. */
2372 typedef int yy_state_t;
2373
2374 /** Rule numbers. */
2375 typedef int yyRuleNum;
2376
2377 /** Item references. */
2378 typedef short yyItemNum;
2379
2380 typedef struct yyGLRState yyGLRState;
2381 typedef struct yyGLRStateSet yyGLRStateSet;
2382 typedef struct yySemanticOption yySemanticOption;
2383 typedef union yyGLRStackItem yyGLRStackItem;
2384 typedef struct yyGLRStack yyGLRStack;
2385
2386 struct yyGLRState
2387 {
2388 /** Type tag: always true. */
2389 yybool yyisState;
2390 /** Type tag for yysemantics. If true, yyval applies, otherwise
2391 * yyfirstVal applies. */
2392 yybool yyresolved;
2393 /** Number of corresponding LALR(1) machine state. */
2394 yy_state_t yylrState;
2395 4285480 /** Preceding state in this stack */
2396
2/6
✓ Branch 0 taken 4285480 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4285480 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4285480 yyGLRState* yypred;
2397 /** Source position of the last token produced by my symbol */
2398 52394 YYPTRDIFF_T yyposn;
2399
2/6
✓ Branch 0 taken 52394 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 52394 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
52394 union {
2400 /** First in a chain of alternative reductions producing the
2401 198157 * nonterminal corresponding to this state, threaded through
2402
4/10
✓ Branch 0 taken 198157 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 198157 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 198157 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 198157 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
198157 * yynext. */
2403 yySemanticOption* yyfirstVal;
2404 92155 /** Semantic value for this state. */
2405 311553 YYSTYPE yyval;
2406 6779 } yysemantics;
2407 /** Source location for this state. */
2408 9948 YYLTYPE yyloc;
2409
3/8
✓ Branch 0 taken 9948 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9948 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 9948 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
9948 };
2410
2411 struct yyGLRStateSet
2412 {
2413 yyGLRState** yystates;
2414 /** During nondeterministic operation, yylookaheadNeeds tracks which
2415 * stacks have actually needed the current lookahead. During deterministic
2416 * operation, yylookaheadNeeds[0] is not maintained since it would merely
2417 * duplicate yychar != TOK_YYEMPTY. */
2418 yybool* yylookaheadNeeds;
2419 3 YYPTRDIFF_T yysize;
2420 3 YYPTRDIFF_T yycapacity;
2421 3 };
2422
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3
2423 3 struct yySemanticOption
2424 113180 {
2425 /** Type tag: always false. */
2426 yybool yyisState;
2427 /** Rule number for this reduction */
2428 yyRuleNum yyrule;
2429 92155 /** The last RHS state in the list of states to be reduced. */
2430
2/4
✓ Branch 0 taken 92155 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 92155 times.
92155 yyGLRState* yystate;
2431 /** The lookahead for this reduction. */
2432 int yyrawchar;
2433 YYSTYPE yyval;
2434 YYLTYPE yyloc;
2435 /** Next sibling in chain of options. To facilitate merging,
2436 * options are chained in decreasing order by address. */
2437
2/6
✓ Branch 0 taken 161759 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 161759 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
161759 yySemanticOption* yynext;
2438
2/6
✓ Branch 0 taken 149794 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 149794 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
149794 };
2439
2440 /** Type of the items in the GLR stack. The yyisState field
2441 * indicates which item of the union is valid. */
2442 union yyGLRStackItem {
2443 yyGLRState yystate;
2444 yySemanticOption yyoption;
2445 };
2446
2447 struct yyGLRStack {
2448 int yyerrState;
2449 /* To compute the location of the error token. */
2450 yyGLRStackItem yyerror_range[3];
2451
2452 YYJMP_BUF yyexception_buffer;
2453 yyGLRStackItem* yyitems;
2454 yyGLRStackItem* yynextFree;
2455 YYPTRDIFF_T yyspaceLeft;
2456 yyGLRState* yysplitPoint;
2457 yyGLRState* yylastDeleted;
2458 yyGLRStateSet yytops;
2459 };
2460
2461 #if YYSTACKEXPANDABLE
2462 static void yyexpandGLRStack (yyGLRStack* yystackp);
2463 #endif
2464
2465 _Noreturn static void
2466 57 yyFail (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root, const char* yymsg)
2467 6779 {
2468
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
6836 if (yymsg != YY_NULLPTR)
2469 6779 yyerror (root, yymsg);
2470 57 YYLONGJMP (yystackp->yyexception_buffer, 1);
2471 }
2472
2473 _Noreturn static void
2474 38778 yyMemoryExhausted (yyGLRStack* yystackp)
2475 38778 {
2476 38778 YYLONGJMP (yystackp->yyexception_buffer, 2);
2477 38778 }
2478
2479 6779 /** Accessing symbol of state YYSTATE. */
2480
2/6
✓ Branch 0 taken 6779 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6779 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6779 static inline yysymbol_kind_t
2481 117835 yy_accessing_symbol (yy_state_t yystate)
2482 {
2483 117835 return YY_CAST (yysymbol_kind_t, yystos[yystate]);
2484 }
2485
2486 #if 1
2487 /* The user-facing name of the symbol whose (internal) number is
2488 YYSYMBOL. No bounds checking. */
2489 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2490
2491 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2492 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2493 static const char *const yytname[] =
2494 {
2495 "\"end of file\"", "error", "\"invalid token\"", "SCRIPT", "ZCLASS",
2496 "FOR", "LOOP", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "RETURN",
2497 "IMPORT", "ZTRUE", "ZFALSE", "WHILE", "BREAK", "CONTINUE", "ZCONST",
2498 "DO", "TYPEDEF", "EXPECTERROR", "OPTIONVALUE", "ISINCLUDED", "DEFINE",
2499 "ENUM", "NAMESPACE", "USING", "ALWAYS", "ZASM", "INCLUDE", "INCLUDEPATH",
2500 "INCLUDEIF", "UNTIL", "UNLESS", "REPEAT", "INLINE", "INTERNAL", "STATIC",
2501 "CONSTEXPR", "NEW", "DELETE", "CASSERT", "ZAUTO", "ZVOID", "UNTYPED",
2502 "ZBOOL", "ZFLOAT", "ZCHAR", "ZLONG", "ZRGB", "COMMA", "DOT", "SEMICOLON",
2503 "SCOPERES", "COLON", "IN", "LPAREN", "RPAREN", "EMPTYBRACKETS",
2504 "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "QMARK", "ARROW",
2505 "INCREMENT", "DECREMENT", "NOT", "BITNOT", "EXPN", "TIMES", "DIVIDE",
2506 "MODULO", "PLUS", "MINUS", "LSHIFT", "RSHIFT", "LE", "LT", "GE", "GT",
2507 "EQ", "NE", "BITAND", "BITXOR", "BITOR", "AND", "OR", "XOR", "ASSIGN",
2508 "PLUSASSIGN", "MINUSASSIGN", "TIMESASSIGN", "DIVIDEASSIGN",
2509 "MODULOASSIGN", "LSHIFTASSIGN", "RSHIFTASSIGN", "BITANDASSIGN",
2510 "BITXORASSIGN", "BITORASSIGN", "ANDASSIGN", "ORASSIGN", "CAST", "RANGE",
2511 "RANGE_L", "RANGE_R", "RANGE_LR", "RANGE_N", "APPXEQUAL", "DOUBLEBANG",
2512 "PERCENT", "BITNOTASSIGN", "INVMOD", "DOUBLEADDR", "DOUBLESTAR",
2513 "HANDLE", "HANDLETOHANDLE", "ADDR", "HASH", "ENDLINE", "OPTION",
2514 "INHERIT", "IDENTIFIER", "QUOTEDSTRING", "CASESTRING", "IMPORTSTRING",
2515 "SINGLECHAR", "NUMBER", "LONGNUMBER", "$accept", "Init", "Global_List",
2516 "Global_Statement", "Trail_Comma_RBrace", "Namespace",
2517 "Namespace_Block_List", "Namespace_Statement", "Using", "AlwaysUsing",
2518 "Import", "IncludePath", "Option", "Statement_Assert", "DataTypeDef",
2519 "StandardDataTypedef", "DataType", "DataType_Mods", "DataType_Base",
2520 "ScriptTypeDef", "Data", "Data_List", "Data_Element",
2521 "Data_Element_Array_List", "Single_Data_req_assign",
2522 "Data_Element_Array_Element", "Data_Element_Array_Element_Size_List",
2523 "Function", "Function_Typeless", "Function_Heading",
2524 "FunctionTemplateList", "Function_Parameters_List",
2525 "Function_Parameters_Element", "Function_OptParams_List",
2526 "Function_VarArg_Element", "Class_Ident", "Class", "Class_Block",
2527 "Class_Block_List", "Class_Constructor", "Class_Destructor",
2528 "Class_Data", "Class_Block_Element", "Annotated_Script", "Script",
2529 "Script_Type", "Script_Block", "Script_Block_List",
2530 "Script_Block_Element", "Annotation_List", "Annotation",
2531 "Block_Statement", "Statement", "Statement_NoSemicolon",
2532 "Statement_Block", "Statement_Block_List", "Statement_If", "If_Body",
2533 "Statement_Switch", "Statement_Switch_Body", "Statement_Switch_Cases",
2534 "Statement_For", "Statement_CommaList", "Statement_For_Standard",
2535 "Statement_For_Each", "Annotated_Loop", "Statement_Loop",
2536 "Statement_Loop_Inf", "Statement_Loop_Range",
2537 "Statement_Loop_Range_Base", "Token_In", "Statement_While",
2538 "Statement_Do", "Statement_Repeat", "Statement_Return",
2539 "Statement_CompileError", "Annotated_Enum", "DataEnum", "Enum_Block",
2540 "ScopeRes", "Identifier_List", "Scoperes_Identifier_List",
2541 "Mixed_Identifier_List", "idlist_scopres", "idlist_dot",
2542 "Ambigious_Iden_List", "Identifier", "Func_Left", "Function_Call",
2543 "Function_Call_Parameters", "Expr_1", "Expr_2", "Expr_Arrow", "Expr_3",
2544 "Expr_4", "Expr_5", "Expr_6", "Expr_7", "Expr_8", "Expr_9", "Expr_10",
2545 "Expr_11", "Expr_12", "Expr_13", "Expr_14", "Expr_15", "Expr_16",
2546 "Expr_17", "Expr_18", "Expression", "Statement_Expression",
2547 "Expression_Constant", "Expression_Const_Range", "Expression_Range",
2548 "Literal", "QuotedString", "Literal_String", "Literal_Bool",
2549 "Literal_Array", "Literal_Array_Body", YY_NULLPTR
2550 };
2551
2552 static const char *
2553 yysymbol_name (yysymbol_kind_t yysymbol)
2554 {
2555 return yytname[yysymbol];
2556 }
2557 #endif
2558
2559 /** Left-hand-side symbol for rule #YYRULE. */
2560 static inline yysymbol_kind_t
2561 400035622 yylhsNonterm (yyRuleNum yyrule)
2562 {
2563 400035622 return YY_CAST (yysymbol_kind_t, yyr1[yyrule]);
2564 }
2565
2566 #if YYDEBUG
2567
2568 # ifndef YYFPRINTF
2569 # define YYFPRINTF fprintf
2570 # endif
2571
2572 # define YY_FPRINTF \
2573 YY_IGNORE_USELESS_CAST_BEGIN YY_FPRINTF_
2574
2575 # define YY_FPRINTF_(Args) \
2576 do { \
2577 YYFPRINTF Args; \
2578 YY_IGNORE_USELESS_CAST_END \
2579 } while (0)
2580
2581 # define YY_DPRINTF \
2582 YY_IGNORE_USELESS_CAST_BEGIN YY_DPRINTF_
2583
2584 # define YY_DPRINTF_(Args) \
2585 do { \
2586 if (yydebug) \
2587 YYFPRINTF Args; \
2588 YY_IGNORE_USELESS_CAST_END \
2589 } while (0)
2590
2591
2592 /* YYLOCATION_PRINT -- Print the location on the stream.
2593 This macro was not mandated originally: define only if we know
2594 we won't break user code: when these are the locations we know. */
2595
2596 # ifndef YYLOCATION_PRINT
2597
2598 # if defined YY_LOCATION_PRINT
2599
2600 /* Temporary convenience wrapper in case some people defined the
2601 undocumented and private YY_LOCATION_PRINT macros. */
2602 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2603
2604 # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2605
2606 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2607
2608 YY_ATTRIBUTE_UNUSED
2609 static int
2610 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2611 {
2612 int res = 0;
2613 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2614 if (0 <= yylocp->first_line)
2615 {
2616 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2617 if (0 <= yylocp->first_column)
2618 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2619 }
2620 if (0 <= yylocp->last_line)
2621 {
2622 if (yylocp->first_line < yylocp->last_line)
2623 {
2624 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2625 if (0 <= end_col)
2626 res += YYFPRINTF (yyo, ".%d", end_col);
2627 }
2628 else if (0 <= end_col && yylocp->first_column < end_col)
2629 res += YYFPRINTF (yyo, "-%d", end_col);
2630 }
2631 return res;
2632 }
2633
2634 # define YYLOCATION_PRINT yy_location_print_
2635
2636 /* Temporary convenience wrapper in case some people defined the
2637 undocumented and private YY_LOCATION_PRINT macros. */
2638 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2639
2640 # else
2641
2642 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2643 /* Temporary convenience wrapper in case some people defined the
2644 undocumented and private YY_LOCATION_PRINT macros. */
2645 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2646
2647 # endif
2648 # endif /* !defined YYLOCATION_PRINT */
2649
2650
2651
2652 /*-----------------------------------.
2653 | Print this symbol's value on YYO. |
2654 `-----------------------------------*/
2655
2656 static void
2657 yy_symbol_value_print (FILE *yyo,
2658 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
2659 {
2660 FILE *yyoutput = yyo;
2661 YY_USE (yyoutput);
2662 YY_USE (yylocationp);
2663 YY_USE (root);
2664 if (!yyvaluep)
2665 return;
2666 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2667 YY_USE (yykind);
2668 YY_IGNORE_MAYBE_UNINITIALIZED_END
2669 }
2670
2671
2672 /*---------------------------.
2673 | Print this symbol on YYO. |
2674 `---------------------------*/
2675
2676 static void
2677 yy_symbol_print (FILE *yyo,
2678 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
2679 {
2680 YYFPRINTF (yyo, "%s %s (",
2681 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2682
2683 YYLOCATION_PRINT (yyo, yylocationp);
2684 YYFPRINTF (yyo, ": ");
2685 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, root);
2686 YYFPRINTF (yyo, ")");
2687 }
2688
2689 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2690 do { \
2691 if (yydebug) \
2692 { \
2693 YY_FPRINTF ((stderr, "%s ", Title)); \
2694 yy_symbol_print (stderr, Kind, Value, Location, root); \
2695 YY_FPRINTF ((stderr, "\n")); \
2696 } \
2697 } while (0)
2698
2699 static inline void
2700 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
2701 yyRuleNum yyrule, std::shared_ptr<ZScript::ASTFile>& root);
2702
2703 # define YY_REDUCE_PRINT(Args) \
2704 do { \
2705 if (yydebug) \
2706 yy_reduce_print Args; \
2707 } while (0)
2708
2709 /* Nonzero means print parse trace. It is left uninitialized so that
2710 multiple parsers can coexist. */
2711 int yydebug;
2712
2713 static void yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
2714 YY_ATTRIBUTE_UNUSED;
2715 static void yypdumpstack (yyGLRStack* yystackp)
2716 YY_ATTRIBUTE_UNUSED;
2717
2718 #else /* !YYDEBUG */
2719
2720 # define YY_DPRINTF(Args) do {} while (yyfalse)
2721 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2722 # define YY_REDUCE_PRINT(Args)
2723
2724 #endif /* !YYDEBUG */
2725
2726 #ifndef yystrlen
2727 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2728 #endif
2729
2730 #ifndef yystpcpy
2731 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2732 # define yystpcpy stpcpy
2733 # else
2734 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2735 YYDEST. */
2736 static char *
2737 yystpcpy (char *yydest, const char *yysrc)
2738 {
2739 char *yyd = yydest;
2740 const char *yys = yysrc;
2741
2742 while ((*yyd++ = *yys++) != '\0')
2743 continue;
2744
2745 return yyd - 1;
2746 }
2747 # endif
2748 #endif
2749
2750 #ifndef yytnamerr
2751 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2752 quotes and backslashes, so that it's suitable for yyerror. The
2753 heuristic is that double-quoting is unnecessary unless the string
2754 contains an apostrophe, a comma, or backslash (other than
2755 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2756 null, do not copy; instead, return the length of what the result
2757 would have been. */
2758 static YYPTRDIFF_T
2759 312 yytnamerr (char *yyres, const char *yystr)
2760 {
2761
2/2
✓ Branch 0 taken 308 times.
✓ Branch 1 taken 4 times.
312 if (*yystr == '"')
2762 {
2763 4 YYPTRDIFF_T yyn = 0;
2764 4 char const *yyp = yystr;
2765
2766 48 for (;;)
2767
2/4
✓ Branch 0 taken 44 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
48 switch (*++yyp)
2768 {
2769 case '\'':
2770 case ',':
2771 goto do_not_strip_quotes;
2772
2773 case '\\':
2774 if (*++yyp != '\\')
2775 goto do_not_strip_quotes;
2776 else
2777 goto append;
2778
2779 append:
2780 default:
2781
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 22 times.
44 if (yyres)
2782 22 yyres[yyn] = *yyp;
2783 44 yyn++;
2784 44 break;
2785
2786 case '"':
2787
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
4 if (yyres)
2788 2 yyres[yyn] = '\0';
2789 4 return yyn;
2790 }
2791 do_not_strip_quotes: ;
2792 }
2793
2794
2/2
✓ Branch 0 taken 154 times.
✓ Branch 1 taken 154 times.
308 if (yyres)
2795 154 return yystpcpy (yyres, yystr) - yyres;
2796 else
2797 154 return yystrlen (yystr);
2798 312 }
2799 #endif
2800
2801
2802 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
2803 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
2804 * containing the pointer to the next state in the chain. */
2805 static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
2806 static void
2807 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
2808 {
2809 int i;
2810 yyGLRState *s = yyvsp[yylow0].yystate.yypred;
2811 for (i = yylow0-1; i >= yylow1; i -= 1)
2812 {
2813 #if YYDEBUG
2814 yyvsp[i].yystate.yylrState = s->yylrState;
2815 #endif
2816 yyvsp[i].yystate.yyresolved = s->yyresolved;
2817 if (s->yyresolved)
2818 yyvsp[i].yystate.yysemantics.yyval = s->yysemantics.yyval;
2819 else
2820 /* The effect of using yyval or yyloc (in an immediate rule) is
2821 * undefined. */
2822 yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
2823 yyvsp[i].yystate.yyloc = s->yyloc;
2824 s = yyvsp[i].yystate.yypred = s->yypred;
2825 }
2826 }
2827
2828
2829 /** If yychar is empty, fetch the next token. */
2830 static inline yysymbol_kind_t
2831 288932080 yygetToken (int *yycharp, std::shared_ptr<ZScript::ASTFile>& root)
2832 {
2833 yysymbol_kind_t yytoken;
2834 288932080 YY_USE (root);
2835
2/2
✓ Branch 0 taken 212234847 times.
✓ Branch 1 taken 76697233 times.
288932080 if (*yycharp == TOK_YYEMPTY)
2836 {
2837 76697233 YY_DPRINTF ((stderr, "Reading a token\n"));
2838 76697233 *yycharp = yylex ();
2839 76697233 }
2840
2/2
✓ Branch 0 taken 117401 times.
✓ Branch 1 taken 288814679 times.
288932080 if (*yycharp <= TOK_YYEOF)
2841 {
2842 117401 *yycharp = TOK_YYEOF;
2843 117401 yytoken = YYSYMBOL_YYEOF;
2844 117401 YY_DPRINTF ((stderr, "Now at end of input.\n"));
2845 117401 }
2846 else
2847 {
2848
2/4
✓ Branch 0 taken 288814679 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 288814679 times.
✗ Branch 3 not taken.
288814679 yytoken = YYTRANSLATE (*yycharp);
2849 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2850 }
2851 288932080 return yytoken;
2852 }
2853
2854 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
2855 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
2856 * For convenience, always return YYLOW1. */
2857 static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
2858 YY_ATTRIBUTE_UNUSED;
2859 static inline int
2860 826110613 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
2861 {
2862
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 826110613 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
826110613 if (!yynormal && yylow1 < *yylow)
2863 {
2864 yyfillin (yyvsp, *yylow, yylow1);
2865 *yylow = yylow1;
2866 }
2867 826110613 return yylow1;
2868 }
2869
2870 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
2871 * and top stack item YYVSP. YYLVALP points to place to put semantic
2872 * value ($$), and yylocp points to place for location information
2873 * (@$). Returns yyok for normal return, yyaccept for YYACCEPT,
2874 * yyerr for YYERROR, yyabort for YYABORT, yynomem for YYNOMEM. */
2875 static YYRESULTTAG
2876 400008221 yyuserAction (yyRuleNum yyrule, int yyrhslen, yyGLRStackItem* yyvsp,
2877 yyGLRStack* yystackp, YYPTRDIFF_T yyk,
2878 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
2879 {
2880 400008221 const yybool yynormal YY_ATTRIBUTE_UNUSED = yystackp->yysplitPoint == YY_NULLPTR;
2881 400008221 int yylow = 1;
2882 YY_USE (yyvalp);
2883 YY_USE (yylocp);
2884 400008221 YY_USE (root);
2885 YY_USE (yyk);
2886 YY_USE (yyrhslen);
2887 # undef yyerrok
2888 # define yyerrok (yystackp->yyerrState = 0)
2889 # undef YYACCEPT
2890 # define YYACCEPT return yyaccept
2891 # undef YYABORT
2892 # define YYABORT return yyabort
2893 # undef YYNOMEM
2894 # define YYNOMEM return yynomem
2895 # undef YYERROR
2896 # define YYERROR return yyerrok, yyerr
2897 # undef YYRECOVERING
2898 # define YYRECOVERING() (yystackp->yyerrState != 0)
2899 # undef yyclearin
2900 # define yyclearin (yychar = TOK_YYEMPTY)
2901 # undef YYFILL
2902 # define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
2903 # undef YYBACKUP
2904 # define YYBACKUP(Token, Value) \
2905 return yyerror (root, YY_("syntax error: cannot back up")), \
2906 yyerrok, yyerr
2907
2908
2/2
✓ Branch 0 taken 399754106 times.
✓ Branch 1 taken 254115 times.
400008221 if (yyrhslen == 0)
2909 254115 *yyvalp = yyval_default;
2910 else
2911 399754106 *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yyval;
2912 /* Default location. */
2913
2/2
✓ Branch 0 taken 399754106 times.
✓ Branch 1 taken 254115 times.
400008221 YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
2914 400008221 yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
2915 /* If yyk == -1, we are running a deferred action on a temporary
2916 stack. In that case, YY_REDUCE_PRINT must not play with YYFILL,
2917 so pretend the stack is "normal". */
2918 YY_REDUCE_PRINT ((yynormal || yyk == -1, yyvsp, yyk, yyrule, root));
2919
286/382
✓ Branch 0 taken 1726407 times.
✓ Branch 1 taken 1877 times.
✓ Branch 2 taken 663324 times.
✓ Branch 3 taken 763877 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 30123 times.
✓ Branch 6 taken 33009 times.
✓ Branch 7 taken 6 times.
✓ Branch 8 taken 2560 times.
✓ Branch 9 taken 2900204 times.
✓ Branch 10 taken 2871801 times.
✓ Branch 11 taken 15570 times.
✓ Branch 12 taken 1269354 times.
✓ Branch 13 taken 194500 times.
✓ Branch 14 taken 38380 times.
✓ Branch 15 taken 1627456 times.
✓ Branch 16 taken 468049 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 3522 times.
✓ Branch 20 taken 995 times.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 761487 times.
✓ Branch 24 taken 41702 times.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 18 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 58701 times.
✓ Branch 32 taken 4156 times.
✓ Branch 33 taken 58757 times.
✓ Branch 34 taken 69335 times.
✓ Branch 35 taken 3404 times.
✓ Branch 36 taken 10000 times.
✓ Branch 37 taken 2595 times.
✓ Branch 38 taken 3448 times.
✓ Branch 39 taken 20 times.
✓ Branch 40 taken 38374 times.
✓ Branch 41 taken 170147 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 6 times.
✗ Branch 44 not taken.
✓ Branch 45 taken 58759 times.
✓ Branch 46 taken 119035 times.
✗ Branch 47 not taken.
✓ Branch 48 taken 4234 times.
✓ Branch 49 taken 1 times.
✓ Branch 50 taken 4231 times.
✓ Branch 51 taken 3 times.
✓ Branch 52 taken 830 times.
✓ Branch 53 taken 39 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 378 times.
✓ Branch 56 taken 28 times.
✓ Branch 57 taken 27 times.
✓ Branch 58 taken 31 times.
✓ Branch 59 taken 1 times.
✓ Branch 60 taken 5 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 8 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 42693 times.
✓ Branch 65 taken 26642 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 1877 times.
✓ Branch 68 taken 10801 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 2 times.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 74 taken 4 times.
✓ Branch 75 taken 9 times.
✓ Branch 76 taken 10039 times.
✓ Branch 77 taken 10039 times.
✓ Branch 78 taken 278449 times.
✓ Branch 79 taken 6699238 times.
✓ Branch 80 taken 531369 times.
✓ Branch 81 taken 6167869 times.
✓ Branch 82 taken 2501 times.
✓ Branch 83 taken 451355 times.
✓ Branch 84 taken 90366 times.
✓ Branch 85 taken 670383 times.
✓ Branch 86 taken 3964899 times.
✓ Branch 87 taken 500756 times.
✓ Branch 88 taken 37149 times.
✓ Branch 89 taken 10386 times.
✓ Branch 90 taken 971443 times.
✓ Branch 91 taken 2595 times.
✓ Branch 92 taken 1172039 times.
✓ Branch 93 taken 2415018 times.
✓ Branch 94 taken 2415018 times.
✓ Branch 95 taken 329258 times.
✓ Branch 96 taken 5772005 times.
✓ Branch 97 taken 17 times.
✓ Branch 98 taken 28454 times.
✓ Branch 99 taken 300804 times.
✗ Branch 100 not taken.
✓ Branch 101 taken 28454 times.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✓ Branch 104 taken 554465 times.
✓ Branch 105 taken 714925 times.
✓ Branch 106 taken 593390 times.
✓ Branch 107 taken 1 times.
✓ Branch 108 taken 1280052 times.
✓ Branch 109 taken 28315 times.
✓ Branch 110 taken 28315 times.
✓ Branch 111 taken 1658 times.
✓ Branch 112 taken 1682237 times.
✓ Branch 113 taken 985775 times.
✓ Branch 114 taken 134246 times.
✓ Branch 115 taken 834 times.
✓ Branch 116 taken 187512 times.
✓ Branch 117 taken 2997595 times.
✓ Branch 118 taken 134246 times.
✓ Branch 119 taken 834 times.
✓ Branch 120 taken 38380 times.
✓ Branch 121 taken 38364 times.
✓ Branch 122 taken 16 times.
✗ Branch 123 not taken.
✓ Branch 124 taken 893 times.
✓ Branch 125 taken 7 times.
✓ Branch 126 taken 302 times.
✗ Branch 127 not taken.
✓ Branch 128 taken 38062 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 38925 times.
✓ Branch 131 taken 38955 times.
✓ Branch 132 taken 7 times.
✓ Branch 133 taken 1159709 times.
✓ Branch 134 taken 1159709 times.
✗ Branch 135 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✓ Branch 138 taken 47 times.
✓ Branch 139 taken 3523 times.
✓ Branch 140 taken 6126 times.
✓ Branch 141 taken 1 times.
✗ Branch 142 not taken.
✓ Branch 143 taken 3523 times.
✗ Branch 144 not taken.
✓ Branch 145 taken 86 times.
✓ Branch 146 taken 4419 times.
✗ Branch 147 not taken.
✓ Branch 148 taken 4 times.
✓ Branch 149 taken 7 times.
✓ Branch 150 taken 204 times.
✓ Branch 151 taken 20815 times.
✓ Branch 152 taken 21016 times.
✓ Branch 153 taken 3 times.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 157 not taken.
✓ Branch 158 taken 1140521 times.
✓ Branch 159 taken 457823 times.
✗ Branch 160 not taken.
✓ Branch 161 taken 833 times.
✗ Branch 162 not taken.
✓ Branch 163 taken 1421220 times.
✓ Branch 164 taken 447519 times.
✓ Branch 165 taken 153082 times.
✓ Branch 166 taken 6446 times.
✓ Branch 167 taken 598 times.
✗ Branch 168 not taken.
✓ Branch 169 taken 1133926 times.
✓ Branch 170 taken 100325 times.
✓ Branch 171 taken 1 times.
✓ Branch 172 taken 22297 times.
✗ Branch 173 not taken.
✓ Branch 174 taken 8207 times.
✓ Branch 175 taken 133698 times.
✗ Branch 176 not taken.
✓ Branch 177 taken 164590 times.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✓ Branch 190 taken 7846 times.
✗ Branch 191 not taken.
✓ Branch 192 taken 1162234 times.
✓ Branch 193 taken 210 times.
✓ Branch 194 taken 1864158 times.
✗ Branch 195 not taken.
✓ Branch 196 taken 1550788 times.
✓ Branch 197 taken 6643 times.
✓ Branch 198 taken 718695 times.
✓ Branch 199 taken 42792 times.
✓ Branch 200 taken 17 times.
✗ Branch 201 not taken.
✓ Branch 202 taken 542566 times.
✓ Branch 203 taken 218904 times.
✓ Branch 204 taken 41702 times.
✓ Branch 205 taken 353447 times.
✓ Branch 206 taken 41702 times.
✓ Branch 207 taken 21905 times.
✓ Branch 208 taken 1661 times.
✓ Branch 209 taken 834 times.
✗ Branch 210 not taken.
✓ Branch 211 taken 363535 times.
✓ Branch 212 taken 1658 times.
✗ Branch 213 not taken.
✓ Branch 214 taken 29956 times.
✓ Branch 215 taken 153064 times.
✗ Branch 216 not taken.
✓ Branch 217 taken 153067 times.
✓ Branch 218 taken 153063 times.
✓ Branch 219 taken 1 times.
✓ Branch 220 taken 18 times.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 225 taken 1 times.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✓ Branch 228 taken 1 times.
✗ Branch 229 not taken.
✓ Branch 230 taken 1 times.
✗ Branch 231 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✓ Branch 235 taken 19 times.
✗ Branch 236 not taken.
✓ Branch 237 taken 6440 times.
✓ Branch 238 taken 1 times.
✓ Branch 239 taken 5 times.
✗ Branch 240 not taken.
✓ Branch 241 taken 592 times.
✗ Branch 242 not taken.
✓ Branch 243 taken 6 times.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✓ Branch 246 taken 1096261 times.
✓ Branch 247 taken 37666 times.
✗ Branch 248 not taken.
✓ Branch 249 taken 20767 times.
✓ Branch 250 taken 150248 times.
✓ Branch 251 taken 33679 times.
✓ Branch 252 taken 1 times.
✓ Branch 253 taken 137335 times.
✓ Branch 254 taken 3183412 times.
✓ Branch 255 taken 171015 times.
✓ Branch 256 taken 1225 times.
✗ Branch 257 not taken.
✓ Branch 258 taken 1222 times.
✓ Branch 259 taken 15 times.
✓ Branch 260 taken 11776972 times.
✓ Branch 261 taken 3 times.
✓ Branch 262 taken 4239 times.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✓ Branch 268 taken 1225 times.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✓ Branch 271 taken 15 times.
✓ Branch 272 taken 11782451 times.
✓ Branch 273 taken 20583299 times.
✓ Branch 274 taken 209702 times.
✓ Branch 275 taken 1171086 times.
✓ Branch 276 taken 381 times.
✓ Branch 277 taken 43 times.
✓ Branch 278 taken 72442 times.
✓ Branch 279 taken 1308345 times.
✓ Branch 280 taken 1070929 times.
✓ Branch 281 taken 1308389 times.
✓ Branch 282 taken 8326887 times.
✓ Branch 283 taken 4956466 times.
✓ Branch 284 taken 1011327 times.
✓ Branch 285 taken 14294680 times.
✓ Branch 286 taken 7116 times.
✓ Branch 287 taken 2373467 times.
✓ Branch 288 taken 14294680 times.
✓ Branch 289 taken 44156 times.
✓ Branch 290 taken 17243 times.
✓ Branch 291 taken 1381211 times.
✓ Branch 292 taken 592496 times.
✓ Branch 293 taken 2163765 times.
✓ Branch 294 taken 15466189 times.
✓ Branch 295 taken 95519 times.
✓ Branch 296 taken 43645 times.
✓ Branch 297 taken 274494 times.
✓ Branch 298 taken 50527 times.
✓ Branch 299 taken 7080 times.
✓ Branch 300 taken 15466189 times.
✗ Branch 301 not taken.
✓ Branch 302 taken 15191414 times.
✓ Branch 303 taken 159408 times.
✓ Branch 304 taken 66449 times.
✓ Branch 305 taken 48918 times.
✓ Branch 306 taken 14115376 times.
✓ Branch 307 taken 616334 times.
✓ Branch 308 taken 459704 times.
✓ Branch 309 taken 14026898 times.
✓ Branch 310 taken 38894 times.
✓ Branch 311 taken 49584 times.
✓ Branch 312 taken 13486744 times.
✓ Branch 313 taken 227161 times.
✓ Branch 314 taken 63638 times.
✓ Branch 315 taken 164666 times.
✓ Branch 316 taken 84689 times.
✓ Branch 317 taken 13086134 times.
✓ Branch 318 taken 314349 times.
✓ Branch 319 taken 82114 times.
✗ Branch 320 not taken.
✓ Branch 321 taken 4147 times.
✓ Branch 322 taken 12986717 times.
✓ Branch 323 taken 99417 times.
✓ Branch 324 taken 12982563 times.
✓ Branch 325 taken 4154 times.
✓ Branch 326 taken 12975032 times.
✓ Branch 327 taken 7531 times.
✓ Branch 328 taken 12846239 times.
✓ Branch 329 taken 128793 times.
✓ Branch 330 taken 12700324 times.
✓ Branch 331 taken 145915 times.
✓ Branch 332 taken 12548239 times.
✓ Branch 333 taken 152085 times.
✓ Branch 334 taken 12396154 times.
✓ Branch 335 taken 6 times.
✓ Branch 336 taken 11332746 times.
✓ Branch 337 taken 915058 times.
✓ Branch 338 taken 72817 times.
✓ Branch 339 taken 20616 times.
✓ Branch 340 taken 4646 times.
✓ Branch 341 taken 6423 times.
✓ Branch 342 taken 1028 times.
✓ Branch 343 taken 8834 times.
✗ Branch 344 not taken.
✓ Branch 345 taken 5178 times.
✓ Branch 346 taken 9124 times.
✓ Branch 347 taken 1375 times.
✓ Branch 348 taken 18183 times.
✓ Branch 349 taken 125 times.
✗ Branch 350 not taken.
✓ Branch 351 taken 11332746 times.
✓ Branch 352 taken 1585811 times.
✓ Branch 353 taken 424709 times.
✓ Branch 354 taken 2492 times.
✓ Branch 355 taken 2492 times.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✓ Branch 358 taken 1 times.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✓ Branch 364 taken 4285480 times.
✓ Branch 365 taken 52394 times.
✓ Branch 366 taken 198157 times.
✓ Branch 367 taken 92155 times.
✓ Branch 368 taken 311553 times.
✓ Branch 369 taken 6779 times.
✓ Branch 370 taken 9948 times.
✗ Branch 371 not taken.
✓ Branch 372 taken 3 times.
✓ Branch 373 taken 113180 times.
✓ Branch 374 taken 92155 times.
✓ Branch 375 taken 161759 times.
✓ Branch 376 taken 149794 times.
✗ Branch 377 not taken.
✗ Branch 378 not taken.
✓ Branch 379 taken 6779 times.
✓ Branch 380 taken 38778 times.
✓ Branch 381 taken 6779 times.
400008221 switch (yyrule)
2920 {
2921 case 2: /* Init: Global_List */
2922 #line 309 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2923 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2924 #line 2925 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2925 break;
2926
2927 case 3: /* Global_List: Global_List Global_Statement */
2928 #line 315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2929 {
2930 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2931 root->addDeclaration(declaration);}
2932 #line 2933 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2933 break;
2934
2935 case 4: /* Global_List: Global_List Option */
2936 #line 318 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2937 {
2938 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2939 root->options.push_back(option);
2940 if (root->hasDeclarations())
2941 yywarn("WARNING: Options should come before everything else.");}
2942 #line 2943 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2943 break;
2944
2945 case 5: /* Global_List: %empty */
2946 #line 323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2947 {root.reset(new ASTFile(noloc));}
2948 #line 2949 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2949 break;
2950
2951 case 6: /* Global_Statement: Import */
2952 #line 327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2953 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2954 #line 2955 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2955 break;
2956
2957 case 7: /* Global_Statement: IncludePath */
2958 #line 328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2959 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2960 #line 2961 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2961 break;
2962
2963 case 8: /* Global_Statement: Namespace */
2964 #line 329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2965 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2966 #line 2967 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2967 break;
2968
2969 case 9: /* Global_Statement: DataTypeDef SEMICOLON */
2970 #line 330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2971 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2972 #line 2973 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2973 break;
2974
2975 case 10: /* Global_Statement: ScriptTypeDef SEMICOLON */
2976 #line 331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2977 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2978 #line 2979 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2979 break;
2980
2981 case 11: /* Global_Statement: Data SEMICOLON */
2982 #line 332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2983 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2984 #line 2985 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2985 break;
2986
2987 case 12: /* Global_Statement: Function */
2988 #line 333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2989 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2990 #line 2991 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2991 break;
2992
2993 case 13: /* Global_Statement: Script */
2994 #line 334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2995 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2996 #line 2997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2997 break;
2998
2999 case 14: /* Global_Statement: Annotated_Script */
3000 #line 335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3001 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3002 #line 3003 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3003 break;
3004
3005 case 15: /* Global_Statement: Class */
3006 #line 336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3007 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3008 #line 3009 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3009 break;
3010
3011 case 16: /* Global_Statement: Annotated_Enum SEMICOLON */
3012 #line 337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3013 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3014 #line 3015 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3015 break;
3016
3017 case 17: /* Global_Statement: Using SEMICOLON */
3018 #line 338 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3019 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3020 #line 3021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3021 break;
3022
3023 case 18: /* Global_Statement: AlwaysUsing SEMICOLON */
3024 #line 339 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3025 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3026 #line 3027 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3027 break;
3028
3029 case 19: /* Global_Statement: Statement_Assert SEMICOLON */
3030 #line 340 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3031 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3032 #line 3033 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3033 break;
3034
3035 case 20: /* Global_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Global_Statement */
3036 #line 341 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3037 {
3038 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3039 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3040 declaration->compileErrorCatches.push_back(errorId);
3041 (*yyvalp) = declaration;}
3042 #line 3043 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3043 break;
3044
3045 case 21: /* Trail_Comma_RBrace: COMMA RBRACE */
3046 #line 349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3047 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3048 #line 3049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3049 break;
3050
3051 case 22: /* Trail_Comma_RBrace: RBRACE */
3052 #line 350 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3053 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3054 #line 3055 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3055 break;
3056
3057 case 23: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE RBRACE */
3058 #line 356 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3059 {
3060 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3061 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3062 namesp->identifier = idens->componentNodes.front()->clone();
3063 if (!ParserHelper::isValidIdentifier(namesp->getName()))
3064 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,namesp->getName().c_str());
3065 auto& components = idens->componentNodes;
3066 if(components.size() > 1)
3067 for(auto it = components.begin() + 1;
3068 it != components.end(); ++it)
3069 {
3070 ASTNamespace* subsp = new ASTNamespace((*yylocp));
3071 subsp->identifier = (*it)->clone();
3072 if (!ParserHelper::isValidIdentifier(subsp->getName()))
3073 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,subsp->getName().c_str());
3074 namesp->namespaces.push_back(subsp);
3075 }
3076 delete idens;
3077 (*yyvalp) = namesp;
3078 }
3079 #line 3080 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3080 break;
3081
3082 case 24: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE Namespace_Block_List RBRACE */
3083 #line 376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3084 {
3085 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3086 auto& components = idens->componentNodes;
3087 int32_t size = components.size();
3088 if(size == 1)
3089 {
3090 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3091 namesp->identifier = components.front()->clone();
3092 namesp->location = (*yylocp);
3093 delete idens;
3094 (*yyvalp) = namesp;
3095 }
3096 else if(size == 2)
3097 {
3098 ASTNamespace* top = new ASTNamespace((*yylocp));
3099 top->identifier = components.front()->clone();
3100 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3101 namesp->identifier = components[1]->clone();
3102 namesp->location = (*yylocp);
3103 top->namespaces.push_back(namesp);
3104 delete idens;
3105 (*yyvalp) = top;
3106 }
3107 else
3108 {
3109 ASTNamespace* top = new ASTNamespace((*yylocp));
3110 top->identifier = components.front()->clone();
3111 ASTNamespace* temp = top;
3112 ASTNamespace* temp2;
3113 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3114 namesp->identifier = components.back()->clone();
3115 components.pop_back();
3116 namesp->location = (*yylocp);
3117 for(auto it = components.begin() + 1;
3118 it != components.end(); ++it)
3119 {
3120 temp2 = new ASTNamespace((*yylocp));
3121 temp->identifier = (*it)->clone();
3122 temp->namespaces.push_back(temp2);
3123 temp = temp2;
3124 }
3125 temp->namespaces.push_back(namesp);
3126 delete idens;
3127 (*yyvalp) = top;
3128 }
3129
3130 auto ns = (ASTNamespace*)(*yyvalp);
3131 if (!ParserHelper::isValidIdentifier(ns->getName()))
3132 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,ns->getName().c_str());
3133 }
3134 #line 3135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3135 break;
3136
3137 case 25: /* Namespace_Block_List: Namespace_Block_List Namespace_Statement */
3138 #line 429 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3139 {
3140 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3141 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3142 namesp->addDeclaration(*declaration);
3143 namesp->location = (*yylocp);
3144 (*yyvalp) = namesp;}
3145 #line 3146 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3146 break;
3147
3148 case 26: /* Namespace_Block_List: Namespace_Block_List Option */
3149 #line 435 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3150 {
3151 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3152 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3153 namesp->options.push_back(option);
3154 namesp->location = (*yylocp);
3155 (*yyvalp) = namesp;
3156 if (!namesp->variables.empty()
3157 || !namesp->functions.empty()
3158 || !namesp->dataTypes.empty()
3159 || !namesp->scriptTypes.empty()) {
3160 yywarn("WARNING: Options should come before everything else.");}}
3161 #line 3162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3162 break;
3163
3164 case 27: /* Namespace_Block_List: Namespace_Statement */
3165 #line 446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3166 {
3167 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3168 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3169 namesp->addDeclaration(*declaration);
3170 (*yyvalp) = namesp;}
3171 #line 3172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3172 break;
3173
3174 case 28: /* Namespace_Block_List: Option */
3175 #line 451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3176 {
3177 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3178 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3179 namesp->options.push_back(option);
3180 (*yyvalp) = namesp;}
3181 #line 3182 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3182 break;
3183
3184 case 29: /* Namespace_Statement: Namespace */
3185 #line 459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3186 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3187 #line 3188 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3188 break;
3189
3190 case 30: /* Namespace_Statement: DataTypeDef SEMICOLON */
3191 #line 460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3192 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3193 #line 3194 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3194 break;
3195
3196 case 31: /* Namespace_Statement: ScriptTypeDef SEMICOLON */
3197 #line 461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3198 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3199 #line 3200 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3200 break;
3201
3202 case 32: /* Namespace_Statement: Data SEMICOLON */
3203 #line 462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3204 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3205 #line 3206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3206 break;
3207
3208 case 33: /* Namespace_Statement: Function */
3209 #line 463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3210 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3211 #line 3212 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3212 break;
3213
3214 case 34: /* Namespace_Statement: Script */
3215 #line 464 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3216 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3217 #line 3218 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3218 break;
3219
3220 case 35: /* Namespace_Statement: Annotated_Script */
3221 #line 465 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3222 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3223 #line 3224 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3224 break;
3225
3226 case 36: /* Namespace_Statement: Class */
3227 #line 466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3228 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3229 #line 3230 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3230 break;
3231
3232 case 37: /* Namespace_Statement: Annotated_Enum SEMICOLON */
3233 #line 467 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3234 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3235 #line 3236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3236 break;
3237
3238 case 38: /* Namespace_Statement: Using SEMICOLON */
3239 #line 468 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3240 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3241 #line 3242 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3242 break;
3243
3244 case 39: /* Namespace_Statement: Statement_Assert SEMICOLON */
3245 #line 469 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3246 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3247 #line 3248 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3248 break;
3249
3250 case 40: /* Namespace_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Namespace_Statement */
3251 #line 470 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3252 {
3253 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3254 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3255 declaration->compileErrorCatches.push_back(errorId);
3256 (*yyvalp) = declaration;}
3257 #line 3258 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3258 break;
3259
3260 case 41: /* Using: USING NAMESPACE Scoperes_Identifier_List */
3261 #line 480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3262 {
3263 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3264 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp));
3265 }
3266 #line 3267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3267 break;
3268
3269 case 42: /* AlwaysUsing: ALWAYS USING NAMESPACE Scoperes_Identifier_List */
3270 #line 486 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3271 {
3272 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3273 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp), true);
3274 }
3275 #line 3276 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3276 break;
3277
3278 case 43: /* Import: IMPORT IMPORTSTRING */
3279 #line 495 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3280 {
3281 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3282 (*yyvalp) = new ASTImportDecl(str, (*yylocp));
3283 }
3284 #line 3285 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3285 break;
3286
3287 case 44: /* Import: HASH INCLUDE IMPORTSTRING */
3288 #line 499 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3289 {
3290 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3291 (*yyvalp) = new ASTImportDecl(str, (*yylocp), true);
3292 }
3293 #line 3294 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3294 break;
3295
3296 case 45: /* Import: HASH INCLUDEIF LPAREN Expression_Constant COMMA IMPORTSTRING RPAREN */
3297 #line 503 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3298 {
3299 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3300 ASTExprConst* cond = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3301 ASTImportDecl* decl = new ASTImportDecl(str, (*yylocp), true);
3302 (*yyvalp) = new ASTImportCondDecl(cond, decl, (*yylocp));
3303 }
3304 #line 3305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3305 break;
3306
3307 case 46: /* IncludePath: HASH INCLUDEPATH IMPORTSTRING */
3308 #line 512 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3309 {
3310 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3311 (*yyvalp) = new ASTIncludePath(str->getValue(), (*yylocp));
3312 delete str;}
3313 #line 3314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3314 break;
3315
3316 case 47: /* Option: HASH OPTION IDENTIFIER Expression_Constant ENDLINE */
3317 #line 522 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3318 {
3319 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3320 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3321 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3322 delete name;}
3323 #line 3324 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3324 break;
3325
3326 case 48: /* Option: HASH OPTION IDENTIFIER INHERIT ENDLINE */
3327 #line 528 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3328 {
3329 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3330 (*yyvalp) = new ASTSetOption(
3331 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3332 delete name;}
3333 #line 3334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3334 break;
3335
3336 case 49: /* Option: HASH OPTION IDENTIFIER DEFAULT ENDLINE */
3337 #line 533 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3338 {
3339 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3340 (*yyvalp) = new ASTSetOption(
3341 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3342 delete name;}
3343 #line 3344 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3344 break;
3345
3346 case 50: /* Option: HASH OPTION DEFAULT Expression_Constant ENDLINE */
3347 #line 538 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3348 {
3349 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3350 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3351 #line 3352 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3352 break;
3353
3354 case 51: /* Option: HASH OPTION DEFAULT INHERIT ENDLINE */
3355 #line 541 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3356 {
3357 (*yyvalp) = new ASTSetOption(
3358 "default", CompileOptionSetting::Inherit, (*yylocp));}
3359 #line 3360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3360 break;
3361
3362 case 52: /* Option: HASH OPTION DEFAULT DEFAULT ENDLINE */
3363 #line 544 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3364 {
3365 (*yyvalp) = new ASTSetOption(
3366 "default", CompileOptionSetting::Default, (*yylocp));}
3367 #line 3368 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3368 break;
3369
3370 case 53: /* Statement_Assert: CASSERT LPAREN Expression_Constant RPAREN */
3371 #line 553 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3372 {
3373 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, NULL, (*yylocp));
3374 }
3375 #line 3376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3376 break;
3377
3378 case 54: /* Statement_Assert: CASSERT LPAREN Expression_Constant COMMA QuotedString RPAREN */
3379 #line 556 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3380 {
3381 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));
3382 }
3383 #line 3384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3384 break;
3385
3386 case 55: /* DataTypeDef: StandardDataTypedef */
3387 #line 564 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3388 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3389 #line 3390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3390 break;
3391
3392 case 56: /* StandardDataTypedef: TYPEDEF DataType IDENTIFIER */
3393 #line 567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3394 {
3395 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3396 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3397 (*yyvalp) = new ASTDataTypeDef(type, name->getValue(), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yyloc));
3398 delete name;}
3399 #line 3400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3400 break;
3401
3402 case 57: /* DataType: DataType EMPTYBRACKETS */
3403 #line 575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3404 {
3405 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3406 ++dtype->becomeArray;
3407 (*yyvalp) = dtype;
3408 }
3409 #line 3410 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3410 break;
3411
3412 case 58: /* DataType: DataType_Mods */
3413 #line 580 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3414 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3415 #line 3416 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3416 break;
3417
3418 case 59: /* DataType_Mods: ZCONST DataType_Base */
3419 #line 584 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3420 {
3421 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3422 ++dtype->constant_; //Increment the number of `const` keywords. If >1, this will produce an error later.
3423 (*yyvalp) = dtype;
3424 }
3425 #line 3426 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3426 break;
3427
3428 case 60: /* DataType_Mods: DataType_Base */
3429 #line 589 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3430 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3431 #line 3432 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3432 break;
3433
3434 case 61: /* DataType_Base: ZAUTO */
3435 #line 594 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3436 {(*yyvalp) = new ASTDataType(DataType::ZAUTO, (*yylocp));}
3437 #line 3438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3438 break;
3439
3440 case 62: /* DataType_Base: ZVOID */
3441 #line 595 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3442 {(*yyvalp) = new ASTDataType(DataType::ZVOID, (*yylocp));}
3443 #line 3444 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3444 break;
3445
3446 case 63: /* DataType_Base: UNTYPED */
3447 #line 596 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3448 {(*yyvalp) = new ASTDataType(DataType::UNTYPED, (*yylocp));}
3449 #line 3450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3450 break;
3451
3452 case 64: /* DataType_Base: ZBOOL */
3453 #line 597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3454 {(*yyvalp) = new ASTDataType(DataType::BOOL, (*yylocp));}
3455 #line 3456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3456 break;
3457
3458 case 65: /* DataType_Base: ZFLOAT */
3459 #line 598 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3460 {(*yyvalp) = new ASTDataType(DataType::FLOAT, (*yylocp));}
3461 #line 3462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3462 break;
3463
3464 case 66: /* DataType_Base: ZCHAR */
3465 #line 599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3466 {(*yyvalp) = new ASTDataType(DataType::CHAR, (*yylocp));}
3467 #line 3468 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3468 break;
3469
3470 case 67: /* DataType_Base: ZLONG */
3471 #line 600 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3472 {(*yyvalp) = new ASTDataType(DataType::LONG, (*yylocp));}
3473 #line 3474 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3474 break;
3475
3476 case 68: /* DataType_Base: ZRGB */
3477 #line 601 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3478 {(*yyvalp) = new ASTDataType(DataType::RGBDATA, (*yylocp));}
3479 #line 3480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3480 break;
3481
3482 case 69: /* DataType_Base: Identifier_List */
3483 #line 603 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3484 {
3485 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3486 std::string comment = std::move(iden->doc_comment);
3487 ASTDataType* datatype = new ASTDataType(new DataTypeUnresolved(iden), (*yylocp));
3488 datatype->doc_comment = std::move(comment);
3489 (*yyvalp) = datatype;
3490 }
3491 #line 3492 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3492 break;
3493
3494 case 70: /* ScriptTypeDef: SCRIPT TYPEDEF Script_Type IDENTIFIER */
3495 #line 612 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3496 {
3497 ASTScriptType* oldType = static_cast<ASTScriptType*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval);
3498 ASTString* newName = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3499 (*yyvalp) = new ASTScriptTypeDef(oldType, newName->getValue(), (*yylocp));
3500 delete newName;}
3501 #line 3502 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3502 break;
3503
3504 case 71: /* Data: INTERNAL Data */
3505 #line 623 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3506 {
3507 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3508 if (list->internal)
3509 yyerrmsg("internal modifier used twice");
3510 list->internal = true;
3511 (*yyvalp) = list;}
3512 #line 3513 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3513 break;
3514
3515 case 72: /* Data: DataType Data_List */
3516 #line 629 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3517 {
3518 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3519 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3520 list->baseType = type;
3521 if (!type->doc_comment.empty())
3522 list->doc_comment = std::move(type->doc_comment);
3523 list->location = (*yylocp);
3524 (*yyvalp) = list;}
3525 #line 3526 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3526 break;
3527
3528 case 73: /* Data_List: Data_List COMMA Data_Element */
3529 #line 640 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3530 {
3531 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3532 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3533 list->addDeclaration(element);
3534 list->location = (*yylocp);
3535 (*yyvalp) = list;}
3536 #line 3537 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3537 break;
3538
3539 case 74: /* Data_List: Data_Element */
3540 #line 646 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3541 {
3542 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3543 ASTDataDeclList* list = new ASTDataDeclList((*yylocp));
3544 list->addDeclaration(element);
3545 if (!element->doc_comment.empty())
3546 list->doc_comment = std::move(element->doc_comment);
3547 (*yyvalp) = list;}
3548 #line 3549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3549 break;
3550
3551 case 75: /* Data_Element: Data_Element_Array_List ASSIGN Expression */
3552 #line 656 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3553 {
3554 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3555 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3556 element->setInitializer(initializer);
3557 element->location = (*yylocp);
3558 (*yyvalp) = element;}
3559 #line 3560 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3560 break;
3561
3562 case 76: /* Data_Element: Data_Element_Array_List */
3563 #line 662 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3564 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3565 #line 3566 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3566 break;
3567
3568 case 77: /* Data_Element_Array_List: Data_Element_Array_List Data_Element_Array_Element */
3569 #line 666 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3570 {
3571 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3572 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3573 element->extraArrays.push_back(extraArray);
3574 element->location = (*yylocp);
3575 (*yyvalp) = element;}
3576 #line 3577 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3577 break;
3578
3579 case 78: /* Data_Element_Array_List: Identifier */
3580 #line 672 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3581 {
3582 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3583 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3584 element->identifier = name;
3585 if (!ParserHelper::isValidIdentifier(name->getValue()))
3586 yyerrmsg("ERROR: invalid identifier",name->location.first_line,name->location.first_column,name->getValue().c_str());
3587 element->doc_comment = std::move(name->doc_comment);
3588 if (!first_identifier_for_line) first_identifier_for_line = element;
3589 (*yyvalp) = element;
3590 }
3591 #line 3592 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3592 break;
3593
3594 case 79: /* Single_Data_req_assign: DataType Identifier ASSIGN Expression */
3595 #line 685 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3596 {
3597 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3598 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3599 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3600 element->identifier = name;
3601 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3602 element->setInitializer(initializer);
3603 element->baseType = type;
3604 element->location = (*yylocp);
3605 (*yyvalp) = element;}
3606 #line 3607 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3607 break;
3608
3609 case 80: /* Data_Element_Array_Element: LBRACKET Data_Element_Array_Element_Size_List RBRACKET */
3610 #line 698 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3611 {
3612 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3613 extraArray->location = (*yylocp);
3614 (*yyvalp) = extraArray;}
3615 #line 3616 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3616 break;
3617
3618 case 81: /* Data_Element_Array_Element: EMPTYBRACKETS */
3619 #line 702 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3620 {(*yyvalp) = new ASTDataDeclExtraArray((*yylocp));}
3621 #line 3622 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3622 break;
3623
3624 case 82: /* Data_Element_Array_Element_Size_List: Data_Element_Array_Element_Size_List COMMA Expression_Constant */
3625 #line 706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3626 {
3627 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3628 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3629 extraArray->dimensions.push_back(size);
3630 extraArray->location = (*yylocp);
3631 (*yyvalp) = extraArray;}
3632 #line 3633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3633 break;
3634
3635 case 83: /* Data_Element_Array_Element_Size_List: Expression_Constant */
3636 #line 712 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3637 {
3638 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3639 ASTDataDeclExtraArray* extraArray = new ASTDataDeclExtraArray((*yylocp));
3640 extraArray->dimensions.push_back(size);
3641 (*yyvalp) = extraArray;}
3642 #line 3643 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3643 break;
3644
3645 case 84: /* Function: CONSTEXPR Function */
3646 #line 724 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3647 {
3648 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3649 if(func->getFlag(FUNCFLAG_CONSTEXPR))
3650 {
3651 func->setFlag(FUNCFLAG_INVALID);
3652 func->invalidMsg += " Duplicate `constexpr`.";
3653 }
3654 func->setFlag(FUNCFLAG_CONSTEXPR);
3655 (*yyvalp) = func;
3656 }
3657 #line 3658 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3658 break;
3659
3660 case 85: /* Function: STATIC Function */
3661 #line 735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3662 {
3663 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3664 if(func->getFlag(FUNCFLAG_STATIC))
3665 {
3666 func->setFlag(FUNCFLAG_INVALID);
3667 func->invalidMsg += " Duplicate `static`.";
3668 }
3669 else if(func->getFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CONSTRUCTOR))
3670 {
3671 func->setFlag(FUNCFLAG_INVALID);
3672 func->invalidMsg += " Constructors and destructors cannot be static.";
3673 }
3674 else func->setFlag(FUNCFLAG_STATIC);
3675 (*yyvalp) = func;
3676 }
3677 #line 3678 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3678 break;
3679
3680 case 86: /* Function: INLINE Function */
3681 #line 751 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3682 {
3683 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3684 if(func->getFlag(FUNCFLAG_INLINE))
3685 {
3686 func->setFlag(FUNCFLAG_INVALID);
3687 func->invalidMsg += " Duplicate `inline`.";
3688 }
3689 else func->setFlag(FUNCFLAG_INLINE);
3690 (*yyvalp) = func;
3691 }
3692 #line 3693 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3693 break;
3694
3695 case 87: /* Function: INTERNAL Function */
3696 #line 762 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3697 {
3698 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3699 if(func->getFlag(FUNCFLAG_INTERNAL))
3700 {
3701 func->setFlag(FUNCFLAG_INVALID);
3702 func->invalidMsg += " Duplicate `internal`.";
3703 }
3704 if(func->block)
3705 {
3706 func->setFlag(FUNCFLAG_INVALID);
3707 func->invalidMsg += " Internal function must not have a body.";
3708 }
3709 func->setFlag(FUNCFLAG_INTERNAL);
3710 func->prototype = false;
3711 (*yyvalp) = func;
3712 }
3713 #line 3714 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3714 break;
3715
3716 case 88: /* Function: DataType Function_Typeless */
3717 #line 778 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3718 {
3719 ASTDataType* returnType = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3720 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3721 if (!returnType->doc_comment.empty())
3722 func->doc_comment = std::move(returnType->doc_comment);
3723 func->returnType = returnType;
3724 (*yyvalp) = func;}
3725 #line 3726 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3726 break;
3727
3728 case 89: /* Function_Typeless: Function_Heading Statement_Block */
3729 #line 789 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3730 {
3731 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3732 func->block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3733 (*yyvalp) = func;}
3734 #line 3735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3735 break;
3736
3737 case 90: /* Function_Typeless: Function_Heading SEMICOLON */
3738 #line 793 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3739 {
3740 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3741 func->prototype = true;
3742 func->defaultReturn = new ASTExprConst(new ASTExprCast(new ASTDataType(DataType::CUNTYPED, (*yylocp)), new ASTNumberLiteral(new ASTFloat(0, 0, (*yylocp)), (*yylocp)), (*yylocp)), (*yylocp));
3743 (*yyvalp) = func;}
3744 #line 3745 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3745 break;
3746
3747 case 91: /* Function_Typeless: Function_Heading COLON DEFAULT Expression_Constant SEMICOLON */
3748 #line 798 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3749 {
3750 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3751 func->prototype = true;
3752 func->defaultReturn = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3753 (*yyvalp) = func;}
3754 #line 3755 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3755 break;
3756
3757 case 92: /* Function_Heading: Identifier_List LPAREN Function_Parameters_List RPAREN */
3758 #line 806 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3759 {
3760 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3761 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3762 func->identifier = iden;
3763 func->location = (*yylocp);
3764 func->doc_comment = std::move(iden->doc_comment);
3765 (*yyvalp) = func;}
3766 #line 3767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3767 break;
3768
3769 case 93: /* Function_Heading: Identifier_List LT FunctionTemplateList GT LPAREN Function_Parameters_List RPAREN */
3770 #line 814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3771 {
3772 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
3773 ASTStringList* template_list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3774 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3775 func->identifier = iden;
3776 func->templates.swap(template_list->strings);
3777 delete template_list;
3778 func->location = (*yylocp);
3779 func->doc_comment = std::move(iden->doc_comment);
3780 (*yyvalp) = func;}
3781 #line 3782 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3782 break;
3783
3784 case 94: /* FunctionTemplateList: Identifier */
3785 #line 827 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3786 {
3787 ASTStringList* list = new ASTStringList((*yylocp));
3788 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3789 list->strings.push_back(templ);
3790 (*yyvalp) = list;}
3791 #line 3792 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3792 break;
3793
3794 case 95: /* FunctionTemplateList: FunctionTemplateList COMMA Identifier */
3795 #line 832 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3796 {
3797 ASTStringList* list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3798 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3799 list->location = (*yylocp);
3800 list->strings.push_back(templ);
3801 (*yyvalp) = list;}
3802 #line 3803 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3803 break;
3804
3805 case 96: /* Function_Parameters_List: Function_Parameters_Element COMMA Function_Parameters_List */
3806 #line 840 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3807 {
3808 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3809 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3810 push_front(func->parameters, param);
3811 func->location = (*yylocp);
3812 (*yyvalp) = func;}
3813 #line 3814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3814 break;
3815
3816 case 97: /* Function_Parameters_List: Function_Parameters_Element */
3817 #line 846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3818 {
3819 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3820 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3821 push_front(func->parameters, param);
3822 (*yyvalp) = func;}
3823 #line 3824 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3824 break;
3825
3826 case 98: /* Function_Parameters_List: Function_OptParams_List */
3827 #line 851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3828 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3829 #line 3830 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3830 break;
3831
3832 case 99: /* Function_Parameters_List: Function_VarArg_Element */
3833 #line 852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3834 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3835 #line 3836 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3836 break;
3837
3838 case 100: /* Function_Parameters_List: %empty */
3839 #line 853 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3840 {(*yyvalp) = new ASTFuncDecl((*yylocp));}
3841 #line 3842 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3842 break;
3843
3844 case 101: /* Function_Parameters_Element: DataType Identifier */
3845 #line 857 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3846 {
3847 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3848 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3849 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3850 element->identifier = name;
3851 element->baseType = type;
3852 (*yyvalp) = element;}
3853 #line 3854 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3854 break;
3855
3856 case 102: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression COMMA Function_OptParams_List */
3857 #line 867 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3858 {
3859 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3860 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3861 ASTExpr* val = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3862 push_front(func->parameters, param);
3863 push_front(func->optparams, val);
3864 func->location = (*yylocp);
3865 (*yyvalp) = func;}
3866 #line 3867 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3867 break;
3868
3869 case 103: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression */
3870 #line 875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3871 {
3872 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3873 ASTExpr* val = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3874 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3875 push_front(func->parameters, param);
3876 push_front(func->optparams, val);
3877 (*yyvalp) = func;}
3878 #line 3879 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3879 break;
3880
3881 case 104: /* Function_VarArg_Element: RANGE Function_Parameters_Element */
3882 #line 885 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3883 {
3884 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3885 push_front(func->parameters, (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3886 func->setFlag(FUNCFLAG_VARARGS);
3887 (*yyvalp) = func;}
3888 #line 3889 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3889 break;
3890
3891 case 105: /* Class_Ident: IDENTIFIER */
3892 #line 894 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3893 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3894 #line 3895 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3895 break;
3896
3897 case 106: /* Class: ZCLASS Class_Ident Class_Block */
3898 #line 897 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3899 {
3900 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3901 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3902 user_class->location = name->location;
3903 user_class->identifier = name;
3904 user_class->doc_comment = std::move(name->doc_comment);
3905 if (!first_identifier_for_line) first_identifier_for_line = user_class;
3906 (*yyvalp) = user_class;}
3907 #line 3908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3908 break;
3909
3910 case 107: /* Class_Block: LBRACE Class_Block_List RBRACE */
3911 #line 908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3912 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3913 #line 3914 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3914 break;
3915
3916 case 108: /* Class_Block: LBRACE RBRACE */
3917 #line 909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3918 {(*yyvalp) = new ASTClass((*yylocp));}
3919 #line 3920 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3920 break;
3921
3922 case 109: /* Class_Block_List: Class_Block_List Class_Block_Element */
3923 #line 913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3924 {
3925 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3926 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3927 user_class->addDeclaration(*declaration);
3928 user_class->location = (*yylocp);
3929 (*yyvalp) = user_class;}
3930 #line 3931 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3931 break;
3932
3933 case 110: /* Class_Block_List: Class_Block_List Option */
3934 #line 919 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3935 {
3936 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3937 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3938 user_class->options.push_back(option);
3939 user_class->location = (*yylocp);
3940 (*yyvalp) = user_class;
3941 if (!user_class->variables.empty()
3942 || !user_class->functions.empty()
3943 || !user_class->types.empty()) {
3944 yywarn("WARNING: Options should come before everything else.");}}
3945 #line 3946 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3946 break;
3947
3948 case 111: /* Class_Block_List: Class_Block_List Class_Constructor */
3949 #line 929 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3950 {
3951 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3952 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3953 user_class->constructors.push_back(func);
3954 (*yyvalp) = user_class;}
3955 #line 3956 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3956 break;
3957
3958 case 112: /* Class_Block_List: Class_Block_List Class_Destructor */
3959 #line 934 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3960 {
3961 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3962 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3963 if(user_class->destructor)
3964 {
3965 auto const& loc = func->location;
3966 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3967 delete func;
3968 }
3969 else user_class->destructor = func;
3970 (*yyvalp) = user_class;}
3971 #line 3972 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3972 break;
3973
3974 case 113: /* Class_Block_List: Class_Block_Element */
3975 #line 945 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3976 {
3977 ASTClass* user_class = new ASTClass((*yylocp));
3978 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3979 user_class->addDeclaration(*declaration);
3980 (*yyvalp) = user_class;}
3981 #line 3982 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3982 break;
3983
3984 case 114: /* Class_Block_List: Option */
3985 #line 950 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3986 {
3987 ASTClass* user_class = new ASTClass((*yylocp));
3988 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3989 user_class->options.push_back(option);
3990 (*yyvalp) = user_class;}
3991 #line 3992 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3992 break;
3993
3994 case 115: /* Class_Block_List: Class_Constructor */
3995 #line 955 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3996 {
3997 ASTClass* user_class = new ASTClass((*yylocp));
3998 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3999 user_class->constructors.push_back(func);
4000 (*yyvalp) = user_class;}
4001 #line 4002 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4002 break;
4003
4004 case 116: /* Class_Block_List: Class_Destructor */
4005 #line 960 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4006 {
4007 ASTClass* user_class = new ASTClass((*yylocp));
4008 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4009 if(user_class->destructor)
4010 {
4011 auto const& loc = func->location;
4012 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
4013 delete func;
4014 }
4015 else user_class->destructor = func;
4016 (*yyvalp) = user_class;}
4017 #line 4018 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4018 break;
4019
4020 case 117: /* Class_Constructor: INTERNAL Class_Constructor */
4021 #line 974 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4022 {
4023 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4024 if(func->getFlag(FUNCFLAG_INTERNAL))
4025 {
4026 func->setFlag(FUNCFLAG_INVALID);
4027 func->invalidMsg += " Duplicate `internal`.";
4028 }
4029 else func->setFlag(FUNCFLAG_INTERNAL);
4030 func->prototype = false;
4031 (*yyvalp) = func;}
4032 #line 4033 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4033 break;
4034
4035 case 118: /* Class_Constructor: Function_Typeless */
4036 #line 984 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4037 {
4038 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4039 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4040 func->returnType = returnType;
4041 func->setFlag(FUNCFLAG_CONSTRUCTOR|FUNCFLAG_CLASSFUNC);
4042 if(func->getFlag(FUNCFLAG_STATIC))
4043 {
4044 func->setFlag(FUNCFLAG_INVALID);
4045 func->invalidMsg += " Constructors and destructors cannot be static.";
4046 }
4047 (*yyvalp) = func;}
4048 #line 4049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4049 break;
4050
4051 case 119: /* Class_Destructor: BITNOT Function_Typeless */
4052 #line 997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4053 {
4054 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4055 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4056 func->returnType = returnType;
4057 func->setFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CLASSFUNC);
4058 if(func->getFlag(FUNCFLAG_STATIC))
4059 {
4060 func->setFlag(FUNCFLAG_INVALID);
4061 func->invalidMsg += " Constructors and destructors cannot be static.";
4062 }
4063 (*yyvalp) = func;}
4064 #line 4065 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4065 break;
4066
4067 case 120: /* Class_Data: Data */
4068 #line 1011 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4069 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4070 #line 4071 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4071 break;
4072
4073 case 121: /* Class_Block_Element: Class_Data SEMICOLON */
4074 #line 1015 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4075 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4076 #line 4077 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4077 break;
4078
4079 case 122: /* Class_Block_Element: Function */
4080 #line 1016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4081 {
4082 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4083 func->setFlag(FUNCFLAG_CLASSFUNC);
4084 (*yyvalp) = func;}
4085 #line 4086 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4086 break;
4087
4088 case 123: /* Class_Block_Element: DataTypeDef SEMICOLON */
4089 #line 1020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4090 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4091 #line 4092 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4092 break;
4093
4094 case 124: /* Class_Block_Element: Annotated_Enum SEMICOLON */
4095 #line 1021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4096 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4097 #line 4098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4098 break;
4099
4100 case 125: /* Class_Block_Element: Using SEMICOLON */
4101 #line 1022 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4102 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4103 #line 4104 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4104 break;
4105
4106 case 126: /* Class_Block_Element: Statement_Assert SEMICOLON */
4107 #line 1023 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4108 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4109 #line 4110 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4110 break;
4111
4112 case 127: /* Class_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Class_Block_Element */
4113 #line 1024 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4114 {
4115 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4116 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4117 declaration->compileErrorCatches.push_back(errorId);
4118 (*yyvalp) = declaration;}
4119 #line 4120 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4120 break;
4121
4122 case 128: /* Annotated_Script: Annotation_List Script */
4123 #line 1035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4124 {
4125 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4126 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4127 handle_annotations(list, [&](AnnotData& data)
4128 {
4129 auto& key = data.key;
4130 if(key == "Author")
4131 {
4132 if(annot_type_check(ANNTY_STR, data))
4133 {
4134 annot_trunc_str(data.unescaped_val, 255);
4135 script->metadata.author = data.unescaped_val;
4136 }
4137 return true;
4138 }
4139 else if(key == "InitScript")
4140 {
4141 if(annot_type_check(ANNTY_INT, data))
4142 script->init_weight = data.intval.getZLong();
4143 return true;
4144 }
4145 else if((key.size() == 5 || key.size() == 6) && !key.compare(0,4,"Flag"))
4146 {
4147 byte c = key[4]-'0';
4148 if(key.size() == 6)
4149 c = (c*10)+key[5]-'0';
4150 if(c < 16)
4151 {
4152 if(annot_type_check(ANNTY_STR, data))
4153 {
4154 annot_trunc_str(data.unescaped_val, 255);
4155 script->metadata.usrflags[c] = data.unescaped_val;
4156 }
4157 return true;
4158 }
4159 }
4160 else if((key.size() == 9 || key.size() == 10) && !key.compare(0,8,"FlagHelp"))
4161 {
4162 byte c = key[8]-'0';
4163 if(key.size() == 10)
4164 c = (c*10)+key[9]-'0';
4165 if(c < 16)
4166 {
4167 if(annot_type_check(ANNTY_STR, data))
4168 {
4169 annot_trunc_str(data.val, 65535);
4170 script->metadata.usrflags_help[c] = data.val;
4171 }
4172 return true;
4173 }
4174 }
4175 else if(key.size() == 6 && !key.compare(0,5,"InitD"))
4176 {
4177 byte c = key[5]-'0';
4178 if(c < 8)
4179 {
4180 if(annot_type_check(ANNTY_STR, data))
4181 {
4182 annot_trunc_str(data.unescaped_val, 255);
4183 script->metadata.initd[c] = data.unescaped_val;
4184 }
4185 return true;
4186 }
4187 }
4188 else if(key.size() == 10)
4189 {
4190 byte c = key[9]-'0';
4191 if(!key.compare(0,9,"InitDType"))
4192 {
4193 if(c < 8)
4194 {
4195 if(annot_type_check(ANNTY_STR, data))
4196 {
4197 int8_t v = -1;
4198 upperstr(data.val);
4199 if(data.val.size() == 2 && data.val[0] == 'L')
4200 {
4201 switch(data.val[1])
4202 {
4203 case 'D': v = nswapLDEC; break;
4204 case 'H': v = nswapLHEX; break;
4205 }
4206 }
4207 else if(data.val.size() == 1)
4208 {
4209 switch(data.val[0])
4210 {
4211 case 'D': v = nswapDEC; break;
4212 case 'H': v = nswapHEX; break;
4213 case 'B': v = nswapBOOL; break;
4214 }
4215 }
4216 if(unsigned(v) < nswapMAX)
4217 script->metadata.initd_type[c] = v;
4218 else if(data.val == "-1")
4219 script->metadata.initd_type[c] = -1;
4220 else annot_errstr("ERROR: Bad Annotation Value: '@" + key + "' must be"
4221 " exactly 'D','H','LD','LH','B', or '-1' NOT '" + data.strval + "'.");
4222 }
4223 return true;
4224 }
4225 }
4226 else if(!key.compare(0,9,"InitDHelp"))
4227 {
4228 if(c < 8)
4229 {
4230 if(annot_type_check(ANNTY_STR, data))
4231 {
4232 annot_trunc_str(data.val, 65535);
4233 script->metadata.initd_help[c] = data.val;
4234 }
4235 return true;
4236 }
4237 }
4238 else if(!key.compare(0,9,"Attribute"))
4239 {
4240 if(c < 10)
4241 {
4242 if(annot_type_check(ANNTY_STR, data))
4243 {
4244 annot_trunc_str(data.unescaped_val, 255);
4245 script->metadata.attributes[c] = data.unescaped_val;
4246 }
4247 return true;
4248 }
4249 }
4250 else if(!key.compare(0,9,"Attribyte"))
4251 {
4252 if(c < 8)
4253 {
4254 if(annot_type_check(ANNTY_STR, data))
4255 {
4256 annot_trunc_str(data.unescaped_val, 255);
4257 script->metadata.attribytes[c] = data.unescaped_val;
4258 }
4259 return true;
4260 }
4261 }
4262 }
4263 else if(key.size() == 11 && !key.compare(0,10,"Attrishort"))
4264 {
4265 byte c = key[10]-'0';
4266 if(c < 8)
4267 {
4268 if(annot_type_check(ANNTY_STR, data))
4269 {
4270 annot_trunc_str(data.unescaped_val, 255);
4271 script->metadata.attrishorts[c] = data.unescaped_val;
4272 }
4273 return true;
4274 }
4275 }
4276 else if(key.size() == 14)
4277 {
4278 if(!key.compare(0,13,"AttributeHelp"))
4279 {
4280 byte c = key[13]-'0';
4281 if(c < 10)
4282 {
4283 if(annot_type_check(ANNTY_STR, data))
4284 {
4285 annot_trunc_str(data.val, 65535);
4286 script->metadata.attributes_help[c] = data.val;
4287 }
4288 return true;
4289 }
4290 }
4291 else if(!key.compare(0,13,"AttribyteHelp"))
4292 {
4293 byte c = key[13]-'0';
4294 if(c < 8)
4295 {
4296 if(annot_type_check(ANNTY_STR, data))
4297 {
4298 annot_trunc_str(data.val, 65535);
4299 script->metadata.attribytes_help[c] = data.val;
4300 }
4301 return true;
4302 }
4303 }
4304 }
4305 else if(key.size() == 15 && !key.compare(0,14,"AttrishortHelp"))
4306 {
4307 byte c = key[14]-'0';
4308 if(c < 8)
4309 {
4310 if(annot_type_check(ANNTY_STR, data))
4311 {
4312 annot_trunc_str(data.val, 65535);
4313 script->metadata.attrishorts_help[c] = data.val;
4314 }
4315 return true;
4316 }
4317 }
4318 return false;
4319 });
4320 (*yyvalp) = script;}
4321 #line 4322 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4322 break;
4323
4324 case 129: /* Script: Script_Type SCRIPT IDENTIFIER Script_Block */
4325 #line 1235 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4326 {
4327 ASTScriptType* type = (ASTScriptType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4328 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4329 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4330 script->identifier = name;
4331 script->type = type;
4332 script->metadata.script_name = name->getValue();
4333 script->location = (*yylocp);
4334 (*yyvalp) = script;}
4335 #line 4336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4336 break;
4337
4338 case 130: /* Script_Type: IDENTIFIER */
4339 #line 1248 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4340 {
4341 ASTString* name = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4342 (*yyvalp) = new ASTScriptType(name->getValue(), (*yylocp));
4343 delete name;}
4344 #line 4345 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4345 break;
4346
4347 case 131: /* Script_Block: LBRACE Script_Block_List RBRACE */
4348 #line 1255 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4349 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4350 #line 4351 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4351 break;
4352
4353 case 132: /* Script_Block: LBRACE RBRACE */
4354 #line 1256 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4355 {(*yyvalp) = new ASTScript((*yylocp));}
4356 #line 4357 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4357 break;
4358
4359 case 133: /* Script_Block_List: Script_Block_List Script_Block_Element */
4360 #line 1260 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4361 {
4362 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4363 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4364 script->addDeclaration(*declaration);
4365 script->location = (*yylocp);
4366 (*yyvalp) = script;}
4367 #line 4368 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4368 break;
4369
4370 case 134: /* Script_Block_List: Script_Block_List Option */
4371 #line 1266 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4372 {
4373 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4374 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4375 script->options.push_back(option);
4376 script->location = (*yylocp);
4377 (*yyvalp) = script;
4378 if (!script->variables.empty()
4379 || !script->functions.empty()
4380 || !script->types.empty()) {
4381 yywarn("WARNING: Options should come before everything else.");}}
4382 #line 4383 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4383 break;
4384
4385 case 135: /* Script_Block_List: Script_Block_Element */
4386 #line 1276 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4387 {
4388 ASTScript* script = new ASTScript((*yylocp));
4389 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4390 script->addDeclaration(*declaration);
4391 (*yyvalp) = script;}
4392 #line 4393 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4393 break;
4394
4395 case 136: /* Script_Block_List: Option */
4396 #line 1281 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4397 {
4398 ASTScript* script = new ASTScript((*yylocp));
4399 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4400 script->options.push_back(option);
4401 (*yyvalp) = script;}
4402 #line 4403 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4403 break;
4404
4405 case 137: /* Script_Block_Element: Data SEMICOLON */
4406 #line 1289 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4407 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4408 #line 4409 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4409 break;
4410
4411 case 138: /* Script_Block_Element: Function */
4412 #line 1290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4413 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4414 #line 4415 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4415 break;
4416
4417 case 139: /* Script_Block_Element: DataTypeDef SEMICOLON */
4418 #line 1291 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4419 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4420 #line 4421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4421 break;
4422
4423 case 140: /* Script_Block_Element: Annotated_Enum SEMICOLON */
4424 #line 1292 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4425 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4426 #line 4427 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4427 break;
4428
4429 case 141: /* Script_Block_Element: Using SEMICOLON */
4430 #line 1293 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4431 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4432 #line 4433 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4433 break;
4434
4435 case 142: /* Script_Block_Element: Statement_Assert SEMICOLON */
4436 #line 1294 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4437 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4438 #line 4439 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4439 break;
4440
4441 case 143: /* Script_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Script_Block_Element */
4442 #line 1295 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4443 {
4444 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4445 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4446 declaration->compileErrorCatches.push_back(errorId);
4447 (*yyvalp) = declaration;}
4448 #line 4449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4449 break;
4450
4451 case 144: /* Annotation_List: Annotation_List COMMA Annotation */
4452 #line 1303 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4453 {
4454 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4455 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4456 if (list->doc_comment.empty())
4457 list->doc_comment = std::move(((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval)->doc_comment);
4458 (*yyvalp) = list;}
4459 #line 4460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4460 break;
4461
4462 case 145: /* Annotation_List: Annotation */
4463 #line 1309 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4464 {
4465 ASTAnnotationList* list = new ASTAnnotationList((*yylocp));
4466 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4467 list->doc_comment = std::move(((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval)->doc_comment);
4468 (*yyvalp) = list;}
4469 #line 4470 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4470 break;
4471
4472 case 146: /* Annotation: HANDLE IDENTIFIER LPAREN QuotedString RPAREN */
4473 #line 1317 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4474 {
4475 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4476 ASTString* val = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4477 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4478 a->doc_comment = std::move(key->doc_comment);
4479 (*yyvalp) = a;}
4480 #line 4481 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4481 break;
4482
4483 case 147: /* Annotation: HANDLE IDENTIFIER LPAREN NUMBER RPAREN */
4484 #line 1323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4485 {
4486 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4487 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4488 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4489 a->doc_comment = std::move(key->doc_comment);
4490 (*yyvalp) = a;}
4491 #line 4492 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4492 break;
4493
4494 case 148: /* Annotation: HANDLE IDENTIFIER LPAREN LONGNUMBER RPAREN */
4495 #line 1329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4496 {
4497 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4498 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4499 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4500 a->doc_comment = std::move(key->doc_comment);
4501 (*yyvalp) = a;}
4502 #line 4503 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4503 break;
4504
4505 case 149: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS NUMBER RPAREN */
4506 #line 1335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4507 {
4508 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4509 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4510 val->negative = !val->negative;
4511 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4512 a->doc_comment = std::move(key->doc_comment);
4513 (*yyvalp) = a;}
4514 #line 4515 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4515 break;
4516
4517 case 150: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS LONGNUMBER RPAREN */
4518 #line 1342 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4519 {
4520 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4521 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4522 val->negative = !val->negative;
4523 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4524 a->doc_comment = std::move(key->doc_comment);
4525 (*yyvalp) = a;}
4526 #line 4527 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4527 break;
4528
4529 case 151: /* Annotation: HANDLE IDENTIFIER LPAREN RPAREN */
4530 #line 1349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4531 {
4532 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4533 ASTAnnotation* a = new ASTAnnotation(key, (*yylocp));
4534 a->doc_comment = std::move(key->doc_comment);
4535 (*yyvalp) = a;}
4536 #line 4537 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4537 break;
4538
4539 case 152: /* Block_Statement: Statement */
4540 #line 1360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4541 {
4542 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4543 if(ASTBlock* existing_block = dynamic_cast<ASTBlock*>(stmt))
4544 {
4545 (*yyvalp) = existing_block;
4546 }
4547 else
4548 {
4549 ASTBlock* block = new ASTBlock((*yylocp));
4550 block->statements.push_back(stmt);
4551 (*yyvalp) = block;
4552 }
4553 }
4554 #line 4555 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4555 break;
4556
4557 case 153: /* Statement: Data SEMICOLON */
4558 #line 1377 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4559 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4560 #line 4561 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4561 break;
4562
4563 case 154: /* Statement: DataTypeDef SEMICOLON */
4564 #line 1378 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4565 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4566 #line 4567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4567 break;
4568
4569 case 155: /* Statement: Annotated_Enum SEMICOLON */
4570 #line 1379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4571 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4572 #line 4573 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4573 break;
4574
4575 case 156: /* Statement: Using SEMICOLON */
4576 #line 1380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4577 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4578 #line 4579 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4579 break;
4580
4581 case 157: /* Statement: Statement_Expression SEMICOLON */
4582 #line 1382 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4583 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4584 #line 4585 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4585 break;
4586
4587 case 158: /* Statement: Statement_Block */
4588 #line 1383 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4589 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4590 #line 4591 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4591 break;
4592
4593 case 159: /* Statement: Statement_If */
4594 #line 1384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4595 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4596 #line 4597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4597 break;
4598
4599 case 160: /* Statement: Statement_Switch */
4600 #line 1385 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4601 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4602 #line 4603 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4603 break;
4604
4605 case 161: /* Statement: Statement_For */
4606 #line 1386 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4607 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4608 #line 4609 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4609 break;
4610
4611 case 162: /* Statement: Annotated_Loop */
4612 #line 1387 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4613 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4614 #line 4615 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4615 break;
4616
4617 case 163: /* Statement: Statement_While */
4618 #line 1388 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4619 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4620 #line 4621 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4621 break;
4622
4623 case 164: /* Statement: Statement_Do */
4624 #line 1389 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4625 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4626 #line 4627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4627 break;
4628
4629 case 165: /* Statement: Statement_Repeat */
4630 #line 1390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4631 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4632 #line 4633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4633 break;
4634
4635 case 166: /* Statement: Statement_Return SEMICOLON */
4636 #line 1391 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4637 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4638 #line 4639 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4639 break;
4640
4641 case 167: /* Statement: BREAK SEMICOLON */
4642 #line 1392 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4643 {(*yyvalp) = new ASTStmtBreak(NULL, (*yylocp));}
4644 #line 4645 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4645 break;
4646
4647 case 168: /* Statement: BREAK NUMBER SEMICOLON */
4648 #line 1393 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4649 {
4650 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4651 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4652 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4653 }
4654 #line 4655 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4655 break;
4656
4657 case 169: /* Statement: CONTINUE SEMICOLON */
4658 #line 1398 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4659 {(*yyvalp) = new ASTStmtContinue(NULL, (*yylocp));}
4660 #line 4661 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4661 break;
4662
4663 case 170: /* Statement: CONTINUE NUMBER SEMICOLON */
4664 #line 1399 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4665 {
4666 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4667 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4668 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4669 }
4670 #line 4671 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4671 break;
4672
4673 case 171: /* Statement: SEMICOLON */
4674 #line 1404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4675 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4676 #line 4677 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4677 break;
4678
4679 case 172: /* Statement: Statement_CompileError SEMICOLON */
4680 #line 1405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4681 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4682 #line 4683 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4683 break;
4684
4685 case 173: /* Statement: Statement_Assert SEMICOLON */
4686 #line 1406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4687 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4688 #line 4689 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4689 break;
4690
4691 case 174: /* Statement_NoSemicolon: Data */
4692 #line 1411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4693 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4694 #line 4695 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4695 break;
4696
4697 case 175: /* Statement_NoSemicolon: DataTypeDef */
4698 #line 1412 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4699 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4700 #line 4701 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4701 break;
4702
4703 case 176: /* Statement_NoSemicolon: Annotated_Enum */
4704 #line 1413 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4705 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4706 #line 4707 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4707 break;
4708
4709 case 177: /* Statement_NoSemicolon: Statement_Expression */
4710 #line 1415 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4711 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4712 #line 4713 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4713 break;
4714
4715 case 178: /* Statement_NoSemicolon: Statement_Block */
4716 #line 1416 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4717 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4718 #line 4719 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4719 break;
4720
4721 case 179: /* Statement_NoSemicolon: Statement_If */
4722 #line 1417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4723 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4724 #line 4725 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4725 break;
4726
4727 case 180: /* Statement_NoSemicolon: Statement_Switch */
4728 #line 1418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4729 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4730 #line 4731 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4731 break;
4732
4733 case 181: /* Statement_NoSemicolon: Statement_For */
4734 #line 1419 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4735 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4736 #line 4737 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4737 break;
4738
4739 case 182: /* Statement_NoSemicolon: Annotated_Loop */
4740 #line 1420 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4741 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4742 #line 4743 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4743 break;
4744
4745 case 183: /* Statement_NoSemicolon: Statement_While */
4746 #line 1421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4747 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4748 #line 4749 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4749 break;
4750
4751 case 184: /* Statement_NoSemicolon: Statement_Do */
4752 #line 1422 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4753 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4754 #line 4755 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4755 break;
4756
4757 case 185: /* Statement_NoSemicolon: Statement_Return */
4758 #line 1423 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4759 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4760 #line 4761 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4761 break;
4762
4763 case 186: /* Statement_NoSemicolon: BREAK */
4764 #line 1424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4765 {(*yyvalp) = new ASTStmtBreak(NULL,(*yylocp));}
4766 #line 4767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4767 break;
4768
4769 case 187: /* Statement_NoSemicolon: BREAK NUMBER */
4770 #line 1425 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4771 {
4772 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4773 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4774 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4775 }
4776 #line 4777 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4777 break;
4778
4779 case 188: /* Statement_NoSemicolon: CONTINUE */
4780 #line 1430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4781 {(*yyvalp) = new ASTStmtContinue(NULL,(*yylocp));}
4782 #line 4783 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4783 break;
4784
4785 case 189: /* Statement_NoSemicolon: CONTINUE NUMBER */
4786 #line 1431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4787 {
4788 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4789 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4790 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4791 }
4792 #line 4793 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4793 break;
4794
4795 case 190: /* Statement_NoSemicolon: %empty */
4796 #line 1436 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4797 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4798 #line 4799 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4799 break;
4800
4801 case 191: /* Statement_NoSemicolon: Statement_CompileError */
4802 #line 1437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4803 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4804 #line 4805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4805 break;
4806
4807 case 192: /* Statement_Block: LBRACE Statement_Block_List RBRACE */
4808 #line 1441 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4809 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4810 #line 4811 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4811 break;
4812
4813 case 193: /* Statement_Block: LBRACE RBRACE */
4814 #line 1442 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4815 {(*yyvalp) = new ASTBlock((*yylocp));}
4816 #line 4817 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4817 break;
4818
4819 case 194: /* Statement_Block_List: Statement_Block_List Statement */
4820 #line 1446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4821 {
4822 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4823 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4824 block->statements.push_back(stmt);
4825 (*yyvalp) = block;}
4826 #line 4827 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4827 break;
4828
4829 case 195: /* Statement_Block_List: Statement_Block_List Option */
4830 #line 1451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4831 {
4832 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4833 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4834 block->options.push_back(option);
4835 (*yyvalp) = block;
4836 if (!block->statements.empty()) {
4837 yywarn("WARNING: Options should come before everything else.");}}
4838 #line 4839 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4839 break;
4840
4841 case 196: /* Statement_Block_List: Statement */
4842 #line 1458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4843 {
4844 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4845 ASTBlock* block = new ASTBlock((*yylocp));
4846 block->statements.push_back(stmt);
4847 (*yyvalp) = block;}
4848 #line 4849 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4849 break;
4850
4851 case 197: /* Statement_Block_List: Option */
4852 #line 1463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4853 {
4854 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4855 ASTBlock* block = new ASTBlock((*yylocp));
4856 block->options.push_back(option);
4857 (*yyvalp) = block;}
4858 #line 4859 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4859 break;
4860
4861 case 198: /* Statement_If: IF If_Body */
4862 #line 1471 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4863 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4864 #line 4865 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4865 break;
4866
4867 case 199: /* Statement_If: UNLESS If_Body */
4868 #line 1472 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4869 {
4870 ASTStmtIf* stmt = (ASTStmtIf*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4871 stmt->invert();
4872 (*yyvalp) = stmt;
4873 }
4874 #line 4875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4875 break;
4876
4877 case 200: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement */
4878 #line 1480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4879 {
4880 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4881 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4882 (*yyvalp) = new ASTStmtIf(decl, stmt, (*yylocp));}
4883 #line 4884 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4884 break;
4885
4886 case 201: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement ELSE Block_Statement */
4887 #line 1484 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4888 {
4889 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4890 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4891 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4892 (*yyvalp) = new ASTStmtIfElse(decl, thenStatement, elseStatement, (*yylocp));}
4893 #line 4894 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4894 break;
4895
4896 case 202: /* If_Body: LPAREN Expression RPAREN Block_Statement */
4897 #line 1489 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4898 {
4899 ASTExpr* cond = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4900 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4901 (*yyvalp) = new ASTStmtIf(cond, stmt, (*yylocp));}
4902 #line 4903 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4903 break;
4904
4905 case 203: /* If_Body: LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
4906 #line 1493 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4907 {
4908 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4909 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4910 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4911 (*yyvalp) = new ASTStmtIfElse(test, thenStatement, elseStatement, (*yylocp));}
4912 #line 4913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4913 break;
4914
4915 case 204: /* Statement_Switch: SWITCH LPAREN Expression RPAREN LBRACE Statement_Switch_Body RBRACE */
4916 #line 1501 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4917 {
4918 ASTExpr* key = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4919 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4920 sw->key = key;
4921 (*yyvalp) = sw;}
4922 #line 4923 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4923 break;
4924
4925 case 205: /* Statement_Switch_Body: Statement_Switch_Body Statement_Switch_Cases Statement_Block_List */
4926 #line 1508 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4927 {
4928 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4929 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4930 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4931 cases->block = block;
4932 sw->cases.push_back(cases);
4933 (*yyvalp) = sw;}
4934 #line 4935 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4935 break;
4936
4937 case 206: /* Statement_Switch_Body: Statement_Switch_Cases Statement_Block_List */
4938 #line 1515 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4939 {
4940 ASTStmtSwitch* sw = new ASTStmtSwitch((*yylocp));
4941 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4942 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4943 cases->block = block;
4944 sw->cases.push_back(cases);
4945 (*yyvalp) = sw;}
4946 #line 4947 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4947 break;
4948
4949 case 207: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Constant COLON */
4950 #line 1525 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4951 {
4952 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4953 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4954 cases->cases.push_back(key);
4955 (*yyvalp) = cases;}
4956 #line 4957 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4957 break;
4958
4959 case 208: /* Statement_Switch_Cases: Statement_Switch_Cases DEFAULT COLON */
4960 #line 1530 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4961 {
4962 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4963 cases->isDefault = true;
4964 (*yyvalp) = cases;}
4965 #line 4966 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4966 break;
4967
4968 case 209: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Const_Range COLON */
4969 #line 1534 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4970 {
4971 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4972 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4973 cases->ranges.push_back(range);
4974 (*yyvalp) = cases;}
4975 #line 4976 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4976 break;
4977
4978 case 210: /* Statement_Switch_Cases: Statement_Switch_Cases CASE CASESTRING COLON */
4979 #line 1539 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4980 {
4981 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4982 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4983 delete rawstring;
4984 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4985 cases->str_cases.push_back(key);
4986 (*yyvalp) = cases;}
4987 #line 4988 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4988 break;
4989
4990 case 211: /* Statement_Switch_Cases: CASE Expression_Constant COLON */
4991 #line 1546 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4992 {
4993 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4994 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4995 cases->cases.push_back(key);
4996 (*yyvalp) = cases;}
4997 #line 4998 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4998 break;
4999
5000 case 212: /* Statement_Switch_Cases: CASE Expression_Const_Range COLON */
5001 #line 1551 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5002 {
5003 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5004 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5005 cases->ranges.push_back(range);
5006 (*yyvalp) = cases;}
5007 #line 5008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5008 break;
5009
5010 case 213: /* Statement_Switch_Cases: CASE CASESTRING COLON */
5011 #line 1556 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5012 {
5013 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5014 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5015 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
5016 delete rawstring;
5017 cases->str_cases.push_back(key);
5018 (*yyvalp) = cases;}
5019 #line 5020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5020 break;
5021
5022 case 214: /* Statement_Switch_Cases: DEFAULT COLON */
5023 #line 1563 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5024 {
5025 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5026 cases->isDefault = true;
5027 (*yyvalp) = cases;}
5028 #line 5029 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5029 break;
5030
5031 case 215: /* Statement_For: Statement_For_Standard */
5032 #line 1570 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5033 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5034 #line 5035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5035 break;
5036
5037 case 216: /* Statement_For: Statement_For_Each */
5038 #line 1571 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5039 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5040 #line 5041 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5041 break;
5042
5043 case 217: /* Statement_CommaList: Statement_CommaList COMMA Statement_NoSemicolon */
5044 #line 1575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5045 {
5046 ASTNodeList<ASTStmt>* list = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5047 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5048 (*yyvalp) = list;
5049 }
5050 #line 5051 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5051 break;
5052
5053 case 218: /* Statement_CommaList: Statement_NoSemicolon */
5054 #line 1580 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5055 {
5056 ASTNodeList<ASTStmt>* list = new ASTNodeList<ASTStmt>();
5057 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5058 (*yyvalp) = list;
5059 }
5060 #line 5061 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5061 break;
5062
5063 case 219: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement */
5064 #line 1593 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5065 {
5066 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5067 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5068 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5069 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5070 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, nullptr, (*yylocp));
5071 }
5072 #line 5073 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5073 break;
5074
5075 case 220: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement ELSE Block_Statement */
5076 #line 1605 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5077 {
5078 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-8)].yystate.yysemantics.yyval;
5079 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5080 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5081 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5082 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5083 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, elseStatement, (*yylocp));
5084 }
5085 #line 5086 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5086 break;
5087
5088 case 221: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement */
5089 #line 1618 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5090 {
5091 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5092 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5093 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5094
5095 (*yyvalp) = new ASTStmtForEach(iden, expr, body, nullptr, (*yylocp));
5096 }
5097 #line 5098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5098 break;
5099
5100 case 222: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement ELSE Block_Statement */
5101 #line 1627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5102 {
5103 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5104 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5105 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5106 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5107
5108 (*yyvalp) = new ASTStmtForEach(iden, expr, body, elseblock, (*yylocp));
5109 }
5110 #line 5111 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5111 break;
5112
5113 case 223: /* Annotated_Loop: Annotation_List Statement_Loop */
5114 #line 1638 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5115 {
5116 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5117 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5118 handle_annotations(list, [&](AnnotData& data)
5119 {
5120 auto& key = data.key;
5121 if(key == "AlwaysRunEndpoint")
5122 {
5123 if(annot_type_check(ANNTY_STR, data))
5124 {
5125 if(data.strval == "off")
5126 loop->overflow = ASTStmtRangeLoop::OVERFLOW_ALLOW;
5127 else if(data.strval == "int")
5128 loop->overflow = ASTStmtRangeLoop::OVERFLOW_INT;
5129 else if(data.strval == "long" || data.strval == "float")
5130 loop->overflow = ASTStmtRangeLoop::OVERFLOW_LONG;
5131 else annot_errstr(annot_err_header+": '@"+key+"' must be"
5132 " exactly 'off','int','float', or 'long', NOT '" + data.strval + "'.");
5133 }
5134 return true;
5135 }
5136 return false;
5137 });
5138 (*yyvalp) = loop;}
5139 #line 5140 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5140 break;
5141
5142 case 224: /* Annotated_Loop: Statement_Loop */
5143 #line 1662 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5144 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5145 #line 5146 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5146 break;
5147
5148 case 225: /* Statement_Loop: Statement_Loop_Inf */
5149 #line 1666 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5150 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5151 #line 5152 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5152 break;
5153
5154 case 226: /* Statement_Loop: Statement_Loop_Range */
5155 #line 1667 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5156 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5157 #line 5158 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5158 break;
5159
5160 case 227: /* Statement_Loop_Inf: LOOP LPAREN RPAREN Block_Statement */
5161 #line 1672 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5162 {
5163 ASTExpr* test = new ASTBoolLiteral(true, (*yylocp));
5164 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5165 (*yyvalp) = new ASTStmtWhile(test,body,nullptr,(*yylocp));
5166 }
5167 #line 5168 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5168 break;
5169
5170 case 228: /* Statement_Loop_Range: Statement_Loop_Range_Base ELSE Block_Statement */
5171 #line 1680 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5172 {
5173 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5174 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5175 loop->elseBlock = elseblock;
5176 (*yyvalp) = loop;
5177 }
5178 #line 5179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5179 break;
5180
5181 case 229: /* Statement_Loop_Range: Statement_Loop_Range_Base */
5182 #line 1686 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5183 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5184 #line 5185 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5185 break;
5186
5187 case 230: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5188 #line 1691 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5189 {
5190 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
5191 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5192 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5193 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5194 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5195 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5196 }
5197 #line 5198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5198 break;
5199
5200 case 231: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5201 #line 1700 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5202 {
5203 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5204 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5205 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5206 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5207 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5208 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5209 }
5210 #line 5211 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5211 break;
5212
5213 case 232: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range COMMA Expression RPAREN Block_Statement */
5214 #line 1709 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5215 {
5216 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5217 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5218 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5219 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5220 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5221 }
5222 #line 5223 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5223 break;
5224
5225 case 233: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5226 #line 1717 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5227 {
5228 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
5229 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5230 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5231 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5232 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5233 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5234 }
5235 #line 5236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5236 break;
5237
5238 case 234: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5239 #line 1726 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5240 {
5241 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5242 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5243 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5244 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5245 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5246 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5247 }
5248 #line 5249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5249 break;
5250
5251 case 235: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range RPAREN Block_Statement */
5252 #line 1735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5253 {
5254 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5255 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5256 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5257 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5258 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5259 }
5260 #line 5261 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5261 break;
5262
5263 case 236: /* Token_In: COLON */
5264 #line 1745 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5265 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5266 #line 5267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5267 break;
5268
5269 case 237: /* Token_In: IN */
5270 #line 1746 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5271 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5272 #line 5273 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5273 break;
5274
5275 case 238: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement */
5276 #line 1750 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5277 {
5278 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5279 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5280 (*yyvalp) = new ASTStmtWhile(test, body, nullptr, (*yylocp));}
5281 #line 5282 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5282 break;
5283
5284 case 239: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5285 #line 1754 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5286 {
5287 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5288 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5289 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5290 (*yyvalp) = new ASTStmtWhile(test, body, elseblock, (*yylocp));}
5291 #line 5292 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5292 break;
5293
5294 case 240: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement */
5295 #line 1759 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5296 {
5297 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5298 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5299 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, nullptr, (*yylocp));
5300 stmt->invert();
5301 (*yyvalp) = stmt;}
5302 #line 5303 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5303 break;
5304
5305 case 241: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5306 #line 1765 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5307 {
5308 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5309 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5310 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5311 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, elseblock, (*yylocp));
5312 stmt->invert();
5313 (*yyvalp) = stmt;}
5314 #line 5315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5315 break;
5316
5317 case 242: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN */
5318 #line 1775 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5319 {
5320 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5321 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5322 (*yyvalp) = new ASTStmtDo(test, body, nullptr, (*yylocp));}
5323 #line 5324 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5324 break;
5325
5326 case 243: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN ELSE Block_Statement */
5327 #line 1779 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5328 {
5329 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5330 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5331 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5332 (*yyvalp) = new ASTStmtDo(test, body, elseblock, (*yylocp));}
5333 #line 5334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5334 break;
5335
5336 case 244: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN */
5337 #line 1784 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5338 {
5339 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5340 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5341 ASTStmtDo* stmt = new ASTStmtDo(test, body, nullptr, (*yylocp));
5342 stmt->invert();
5343 (*yyvalp) = stmt;}
5344 #line 5345 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5345 break;
5346
5347 case 245: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN ELSE Block_Statement */
5348 #line 1790 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5349 {
5350 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5351 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5352 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5353 ASTStmtDo* stmt = new ASTStmtDo(test, body, elseblock, (*yylocp));
5354 stmt->invert();
5355 (*yyvalp) = stmt;}
5356 #line 5357 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5357 break;
5358
5359 case 246: /* Statement_Repeat: REPEAT LPAREN Expression_Constant RPAREN Statement */
5360 #line 1800 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5361 {
5362 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5363 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5364 (*yyvalp) = new ASTStmtRepeat(expr, body, (*yylocp));}
5365 #line 5366 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5366 break;
5367
5368 case 247: /* Statement_Return: RETURN Expression */
5369 #line 1807 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5370 {
5371 ASTExpr* value = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5372 (*yyvalp) = new ASTStmtReturnVal(value, (*yylocp));}
5373 #line 5374 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5374 break;
5375
5376 case 248: /* Statement_Return: RETURN */
5377 #line 1810 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5378 {(*yyvalp) = new ASTStmtReturn((*yylocp));}
5379 #line 5380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5380 break;
5381
5382 case 249: /* Statement_CompileError: EXPECTERROR LPAREN Expression_Constant RPAREN Statement_NoSemicolon */
5383 #line 1814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5384 {
5385 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5386 ASTStmt* statement = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5387 statement->compileErrorCatches.push_back(errorId);
5388 (*yyvalp) = statement;}
5389 #line 5390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5390 break;
5391
5392 case 250: /* Annotated_Enum: Annotation_List DataEnum */
5393 #line 1822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5394 {
5395 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5396 ASTDataEnum* en = dynamic_cast<ASTDataEnum*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5397 ASTCustomDataTypeDef* tdef = dynamic_cast<ASTCustomDataTypeDef*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5398 if(tdef) en = tdef->definition.get();
5399 if(tdef) tdef->doc_comment = std::move(list->doc_comment);
5400 handle_annotations(list, [&](AnnotData& data)
5401 {
5402 auto& key = data.key;
5403 if(key == "Increment")
5404 {
5405 if(en->getBitMode() != ASTDataEnum::BIT_NONE)
5406 annot_incompatible("Increment", "Bitflags");
5407 else if(annot_type_check(ANNTY_INT, data))
5408 en->increment_val = data.intval;
5409 return true;
5410 }
5411 else if(key == "Bitflags")
5412 {
5413 if(en->increment_val)
5414 annot_incompatible("Bitflags", "Increment");
5415 else if(annot_type_check(ANNTY_STR, data))
5416 {
5417 if(data.strval == "int")
5418 en->setBitMode(ASTDataEnum::BIT_INT);
5419 else if(data.strval == "long")
5420 en->setBitMode(ASTDataEnum::BIT_LONG);
5421 }
5422 return true;
5423 }
5424 return false;
5425 });
5426 (*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5427 #line 5428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5428 break;
5429
5430 case 251: /* Annotated_Enum: DataEnum */
5431 #line 1855 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5432 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5433 #line 5434 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5434 break;
5435
5436 case 252: /* DataEnum: ENUM LBRACE Enum_Block Trail_Comma_RBrace */
5437 #line 1858 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5438 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5439 #line 5440 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5440 break;
5441
5442 case 253: /* DataEnum: ENUM ASSIGN DataType LBRACE Enum_Block Trail_Comma_RBrace */
5443 #line 1859 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5444 {
5445 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5446 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5447 type->constant_ = 1; //force to be constant, skip `const const` errors
5448 list->baseType = type;
5449 list->location = (*yylocp);
5450 (*yyvalp) = list;}
5451 #line 5452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5452 break;
5453
5454 case 254: /* DataEnum: ENUM IDENTIFIER LBRACE Enum_Block Trail_Comma_RBrace */
5455 #line 1866 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5456 {
5457 ASTDataEnum* en = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5458 en->location = (*yylocp);
5459 ASTString* identifier = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5460 auto custom_typedef = new ASTCustomDataTypeDef(NULL, identifier, en, (*yylocp));
5461 custom_typedef->doc_comment = std::move(identifier->doc_comment);
5462 (*yyvalp) = custom_typedef;}
5463 #line 5464 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5464 break;
5465
5466 case 255: /* Enum_Block: Enum_Block COMMA Data_Element */
5467 #line 1875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5468 {
5469 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5470 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5471 list->addDeclaration(element);
5472 (*yyvalp) = list;}
5473 #line 5474 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5474 break;
5475
5476 case 256: /* Enum_Block: Data_Element */
5477 #line 1880 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5478 {
5479 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5480 ASTDataEnum* list = new ASTDataEnum((*yylocp));
5481 list->addDeclaration(element);
5482 (*yyvalp) = list;}
5483 #line 5484 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5484 break;
5485
5486 case 257: /* ScopeRes: SCOPERES */
5487 #line 1932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5488 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5489 #line 5490 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5490 break;
5491
5492 case 258: /* Identifier_List: Mixed_Identifier_List */
5493 #line 1937 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5494 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5495 #line 5496 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5496 break;
5497
5498 case 259: /* Identifier_List: idlist_scopres */
5499 #line 1938 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5500 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5501 #line 5502 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5502 break;
5503
5504 case 260: /* Identifier_List: idlist_dot */
5505 #line 1939 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5506 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5507 #line 5508 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5508 break;
5509
5510 case 261: /* Identifier_List: Ambigious_Iden_List */
5511 #line 1940 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5512 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5513 #line 5514 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5514 break;
5515
5516 case 262: /* Scoperes_Identifier_List: idlist_scopres */
5517 #line 1944 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5518 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5519 #line 5520 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5520 break;
5521
5522 case 263: /* Scoperes_Identifier_List: Ambigious_Iden_List */
5523 #line 1945 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5524 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5525 #line 5526 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5526 break;
5527
5528 case 264: /* Mixed_Identifier_List: Mixed_Identifier_List DOT Identifier */
5529 #line 1954 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5530 {
5531 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5532 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5533 identifier->components.push_back(name->getValue());
5534 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5535 identifier->delimiters.push_back(".");
5536 identifier->location = (*yylocp);
5537 (*yyvalp) = identifier;}
5538 #line 5539 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5539 break;
5540
5541 case 265: /* Mixed_Identifier_List: idlist_scopres DOT Identifier */
5542 #line 1962 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5543 {
5544 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5545 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5546 identifier->components.push_back(name->getValue());
5547 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5548 identifier->delimiters.push_back(".");
5549 identifier->location = (*yylocp);
5550 (*yyvalp) = identifier;}
5551 #line 5552 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5552 break;
5553
5554 case 266: /* Mixed_Identifier_List: Mixed_Identifier_List ScopeRes Identifier */
5555 #line 1970 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5556 {
5557 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5558 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5559 identifier->components.push_back(name->getValue());
5560 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5561 identifier->delimiters.push_back("::");
5562 identifier->location = (*yylocp);
5563 (*yyvalp) = identifier;}
5564 #line 5565 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5565 break;
5566
5567 case 267: /* Mixed_Identifier_List: idlist_dot ScopeRes Identifier */
5568 #line 1978 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5569 {
5570 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5571 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5572 identifier->components.push_back(name->getValue());
5573 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5574 identifier->delimiters.push_back("::");
5575 identifier->location = (*yylocp);
5576 (*yyvalp) = identifier;}
5577 #line 5578 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5578 break;
5579
5580 case 268: /* idlist_scopres: idlist_scopres ScopeRes Identifier */
5581 #line 1989 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5582 {
5583 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5584 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5585 identifier->components.push_back(name->getValue());
5586 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5587 identifier->delimiters.push_back("::");
5588 identifier->location = (*yylocp);
5589 (*yyvalp) = identifier;}
5590 #line 5591 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5591 break;
5592
5593 case 269: /* idlist_scopres: Ambigious_Iden_List ScopeRes Identifier */
5594 #line 1997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5595 {
5596 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5597 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5598 identifier->components.push_back(name->getValue());
5599 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5600 identifier->delimiters.push_back("::");
5601 identifier->location = (*yylocp);
5602 (*yyvalp) = identifier;}
5603 #line 5604 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5604 break;
5605
5606 case 270: /* idlist_scopres: ScopeRes Ambigious_Iden_List */
5607 #line 2005 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5608 {
5609 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5610 identifier->noUsing = true;
5611 (*yyvalp) = identifier;}
5612 #line 5613 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5613 break;
5614
5615 case 271: /* idlist_dot: idlist_dot DOT Identifier */
5616 #line 2012 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5617 {
5618 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5619 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5620 identifier->components.push_back(name->getValue());
5621 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5622 identifier->delimiters.push_back(".");
5623 identifier->location = (*yylocp);
5624 (*yyvalp) = identifier;}
5625 #line 5626 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5626 break;
5627
5628 case 272: /* idlist_dot: Ambigious_Iden_List DOT Identifier */
5629 #line 2020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5630 {
5631 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5632 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5633 identifier->components.push_back(name->getValue());
5634 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5635 identifier->delimiters.push_back(".");
5636 identifier->location = (*yylocp);
5637 (*yyvalp) = identifier;}
5638 #line 5639 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5639 break;
5640
5641 case 273: /* Ambigious_Iden_List: Identifier */
5642 #line 2031 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5643 {
5644 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5645 ASTExprIdentifier* identifier = new ASTExprIdentifier(std::shared_ptr<ASTString>(name), (*yylocp));
5646 identifier->doc_comment = std::move(name->doc_comment);
5647 if (!first_identifier_for_line) first_identifier_for_line = identifier;
5648 (*yyvalp) = identifier;}
5649 #line 5650 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5650 break;
5651
5652 case 274: /* Identifier: IDENTIFIER */
5653 #line 2040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5654 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5655 #line 5656 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5656 break;
5657
5658 case 275: /* Func_Left: Expr_Arrow */
5659 #line 2044 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5660 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5661 #line 5662 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5662 break;
5663
5664 case 276: /* Func_Left: Identifier_List */
5665 #line 2045 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5666 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5667 #line 5668 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5668 break;
5669
5670 case 277: /* Function_Call: NEW Identifier_List LPAREN RPAREN */
5671 #line 2049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5672 {
5673 ASTExprCall* call = new ASTExprCall((*yylocp));
5674 call->setConstructor(true);
5675 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5676 call->left = left;
5677 call->location = (*yylocp);
5678 (*yyvalp) = call;}
5679 #line 5680 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5680 break;
5681
5682 case 278: /* Function_Call: NEW Identifier_List LPAREN Function_Call_Parameters RPAREN */
5683 #line 2056 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5684 {
5685 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5686 call->setConstructor(true);
5687 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5688 call->left = left;
5689 call->location = (*yylocp);
5690 (*yyvalp) = call;}
5691 #line 5692 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5692 break;
5693
5694 case 279: /* Function_Call: Func_Left LPAREN RPAREN */
5695 #line 2063 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5696 {
5697 ASTExprCall* call = new ASTExprCall((*yylocp));
5698 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5699 call->left = left;
5700 call->location = (*yylocp);
5701 (*yyvalp) = call;}
5702 #line 5703 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5703 break;
5704
5705 case 280: /* Function_Call: Func_Left LPAREN Function_Call_Parameters RPAREN */
5706 #line 2069 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5707 {
5708 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5709 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5710 call->left = left;
5711 call->location = (*yylocp);
5712 (*yyvalp) = call;}
5713 #line 5714 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5714 break;
5715
5716 case 281: /* Function_Call_Parameters: Function_Call_Parameters COMMA Expression */
5717 #line 2078 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5718 {
5719 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5720 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5721 call->parameters.push_back(e);
5722 call->location = (*yylocp);
5723 (*yyvalp) = call;}
5724 #line 5725 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5725 break;
5726
5727 case 282: /* Function_Call_Parameters: Expression */
5728 #line 2084 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5729 {
5730 ASTExprCall* call = new ASTExprCall((*yylocp));
5731 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5732 call->parameters.push_back(e);
5733 (*yyvalp) = call;}
5734 #line 5735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5735 break;
5736
5737 case 283: /* Expr_1: Identifier_List */
5738 #line 2096 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5739 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5740 #line 5741 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5741 break;
5742
5743 case 284: /* Expr_1: Literal */
5744 #line 2097 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5745 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5746 #line 5747 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5747 break;
5748
5749 case 285: /* Expr_1: LPAREN Expression RPAREN */
5750 #line 2098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5751 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5752 #line 5753 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5753 break;
5754
5755 case 286: /* Expr_2: Expr_1 */
5756 #line 2100 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5757 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5758 #line 5759 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5759 break;
5760
5761 case 287: /* Expr_2: LT DataType GT Expr_2 */
5762 #line 2110 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5763 {
5764 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5765 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5766 ASTExprCast* cast = new ASTExprCast(type, expr, (*yylocp));
5767 (*yyvalp) = cast;}
5768 #line 5769 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5769 break;
5770
5771 case 288: /* Expr_Arrow: Expr_3 ARROW IDENTIFIER */
5772 #line 2118 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5773 {
5774 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5775 ASTString* right = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5776 (*yyvalp) = new ASTExprArrow(left, right, (*yylocp));}
5777 #line 5778 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5778 break;
5779
5780 case 289: /* Expr_3: Expr_2 */
5781 #line 2124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5782 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5783 #line 5784 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5784 break;
5785
5786 case 290: /* Expr_3: Expr_3 INCREMENT */
5787 #line 2126 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5788 {(*yyvalp) = new ASTExprIncrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5789 #line 5790 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5790 break;
5791
5792 case 291: /* Expr_3: Expr_3 DECREMENT */
5793 #line 2128 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5794 {(*yyvalp) = new ASTExprDecrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5795 #line 5796 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5796 break;
5797
5798 case 292: /* Expr_3: Function_Call */
5799 #line 2130 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5800 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5801 #line 5802 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5802 break;
5803
5804 case 293: /* Expr_3: Expr_3 LBRACKET Expression RBRACKET */
5805 #line 2132 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5806 {
5807 (*yyvalp) = new ASTExprIndex((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));;}
5808 #line 5809 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5809 break;
5810
5811 case 294: /* Expr_3: Expr_Arrow */
5812 #line 2135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5813 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5814 #line 5815 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5815 break;
5816
5817 case 295: /* Expr_4: Expr_3 */
5818 #line 2138 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5819 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5820 #line 5821 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5821 break;
5822
5823 case 296: /* Expr_4: INCREMENT Expr_4 */
5824 #line 2140 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5825 {(*yyvalp) = new ASTExprIncrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5826 #line 5827 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5827 break;
5828
5829 case 297: /* Expr_4: DECREMENT Expr_4 */
5830 #line 2142 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5831 {(*yyvalp) = new ASTExprDecrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5832 #line 5833 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5833 break;
5834
5835 case 298: /* Expr_4: MINUS Expr_4 */
5836 #line 2144 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5837 {(*yyvalp) = new ASTExprNegate((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5838 #line 5839 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5839 break;
5840
5841 case 299: /* Expr_4: NOT Expr_4 */
5842 #line 2146 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5843 {(*yyvalp) = new ASTExprNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5844 #line 5845 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5845 break;
5846
5847 case 300: /* Expr_4: BITNOT Expr_4 */
5848 #line 2148 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5849 {(*yyvalp) = new ASTExprBitNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5850 #line 5851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5851 break;
5852
5853 case 301: /* Expr_5: Expr_4 */
5854 #line 2151 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5855 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5856 #line 5857 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5857 break;
5858
5859 case 302: /* Expr_5: Expr_5 EXPN Expr_4 */
5860 #line 2153 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5861 {(*yyvalp) = new ASTExprExpn((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5862 #line 5863 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5863 break;
5864
5865 case 303: /* Expr_6: Expr_5 */
5866 #line 2156 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5867 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5868 #line 5869 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5869 break;
5870
5871 case 304: /* Expr_6: Expr_6 TIMES Expr_5 */
5872 #line 2158 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5873 {(*yyvalp) = new ASTExprTimes((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5874 #line 5875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5875 break;
5876
5877 case 305: /* Expr_6: Expr_6 DIVIDE Expr_5 */
5878 #line 2160 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5879 {(*yyvalp) = new ASTExprDivide((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5880 #line 5881 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5881 break;
5882
5883 case 306: /* Expr_6: Expr_6 MODULO Expr_5 */
5884 #line 2162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5885 {(*yyvalp) = new ASTExprModulo((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5886 #line 5887 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5887 break;
5888
5889 case 307: /* Expr_7: Expr_6 */
5890 #line 2165 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5891 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5892 #line 5893 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5893 break;
5894
5895 case 308: /* Expr_7: Expr_7 PLUS Expr_6 */
5896 #line 2167 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5897 {(*yyvalp) = new ASTExprPlus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5898 #line 5899 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5899 break;
5900
5901 case 309: /* Expr_7: Expr_7 MINUS Expr_6 */
5902 #line 2169 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5903 {(*yyvalp) = new ASTExprMinus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5904 #line 5905 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5905 break;
5906
5907 case 310: /* Expr_8: Expr_7 */
5908 #line 2172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5909 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5910 #line 5911 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5911 break;
5912
5913 case 311: /* Expr_8: Expr_8 LSHIFT Expr_7 */
5914 #line 2174 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5915 {(*yyvalp) = new ASTExprLShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5916 #line 5917 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5917 break;
5918
5919 case 312: /* Expr_8: Expr_8 RSHIFT Expr_7 */
5920 #line 2176 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5921 {(*yyvalp) = new ASTExprRShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5922 #line 5923 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5923 break;
5924
5925 case 313: /* Expr_9: Expr_8 */
5926 #line 2179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5927 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5928 #line 5929 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5929 break;
5930
5931 case 314: /* Expr_9: Expr_9 LT Expr_8 */
5932 #line 2181 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5933 {(*yyvalp) = new ASTExprLT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5934 #line 5935 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5935 break;
5936
5937 case 315: /* Expr_9: Expr_9 LE Expr_8 */
5938 #line 2183 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5939 {(*yyvalp) = new ASTExprLE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5940 #line 5941 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5941 break;
5942
5943 case 316: /* Expr_9: Expr_9 GT Expr_8 */
5944 #line 2185 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5945 {(*yyvalp) = new ASTExprGT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5946 #line 5947 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5947 break;
5948
5949 case 317: /* Expr_9: Expr_9 GE Expr_8 */
5950 #line 2187 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5951 {(*yyvalp) = new ASTExprGE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5952 #line 5953 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5953 break;
5954
5955 case 318: /* Expr_10: Expr_9 */
5956 #line 2190 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5957 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5958 #line 5959 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5959 break;
5960
5961 case 319: /* Expr_10: Expr_10 EQ Expr_9 */
5962 #line 2192 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5963 {(*yyvalp) = new ASTExprEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5964 #line 5965 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5965 break;
5966
5967 case 320: /* Expr_10: Expr_10 NE Expr_9 */
5968 #line 2194 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5969 {(*yyvalp) = new ASTExprNE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5970 #line 5971 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5971 break;
5972
5973 case 321: /* Expr_10: Expr_10 APPXEQUAL Expr_9 */
5974 #line 2196 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5975 {(*yyvalp) = new ASTExprAppxEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5976 #line 5977 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5977 break;
5978
5979 case 322: /* Expr_10: Expr_10 XOR Expr_9 */
5980 #line 2198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5981 {(*yyvalp) = new ASTExprXOR((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5982 #line 5983 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5983 break;
5984
5985 case 323: /* Expr_11: Expr_10 */
5986 #line 2201 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5987 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5988 #line 5989 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5989 break;
5990
5991 case 324: /* Expr_11: Expr_11 BITAND Expr_10 */
5992 #line 2203 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5993 {(*yyvalp) = new ASTExprBitAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5994 #line 5995 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5995 break;
5996
5997 case 325: /* Expr_12: Expr_11 */
5998 #line 2206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5999 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6000 #line 6001 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6001 break;
6002
6003 case 326: /* Expr_12: Expr_12 BITXOR Expr_11 */
6004 #line 2208 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6005 {(*yyvalp) = new ASTExprBitXor((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6006 #line 6007 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6007 break;
6008
6009 case 327: /* Expr_13: Expr_12 */
6010 #line 2211 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6011 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6012 #line 6013 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6013 break;
6014
6015 case 328: /* Expr_13: Expr_13 BITOR Expr_12 */
6016 #line 2213 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6017 {(*yyvalp) = new ASTExprBitOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6018 #line 6019 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6019 break;
6020
6021 case 329: /* Expr_14: Expr_13 */
6022 #line 2216 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6023 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6024 #line 6025 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6025 break;
6026
6027 case 330: /* Expr_14: Expr_14 AND Expr_13 */
6028 #line 2218 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6029 {(*yyvalp) = new ASTExprAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6030 #line 6031 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6031 break;
6032
6033 case 331: /* Expr_15: Expr_14 */
6034 #line 2221 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6035 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6036 #line 6037 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6037 break;
6038
6039 case 332: /* Expr_15: Expr_15 OR Expr_14 */
6040 #line 2223 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6041 {(*yyvalp) = new ASTExprOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6042 #line 6043 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6043 break;
6044
6045 case 333: /* Expr_16: Expr_15 */
6046 #line 2226 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6047 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6048 #line 6049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6049 break;
6050
6051 case 334: /* Expr_16: Expr_15 QMARK Expr_16 COLON Expr_16 */
6052 #line 2229 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6053 {
6054 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6055 ASTExpr* middle = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6056 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6057 (*yyvalp) = new ASTTernaryExpr(left, middle, right, (*yylocp));
6058 }
6059 #line 6060 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6060 break;
6061
6062 case 335: /* Expr_17: Expr_16 */
6063 #line 2237 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6064 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6065 #line 6066 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6066 break;
6067
6068 case 336: /* Expr_17: DELETE Expr_17 */
6069 #line 2238 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6070 {
6071 ASTExprDelete* del = new ASTExprDelete((*yylocp));
6072 ASTExpr* operand = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6073 del->operand = operand;
6074 (*yyvalp) = del;}
6075 #line 6076 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6076 break;
6077
6078 case 337: /* Expr_18: Expr_17 */
6079 #line 2245 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6080 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6081 #line 6082 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6082 break;
6083
6084 case 338: /* Expr_18: Expr_17 ASSIGN Expr_18 */
6085 #line 2247 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6086 {(*yyvalp) = new ASTExprAssign((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6087 #line 6088 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6088 break;
6089
6090 case 339: /* Expr_18: Expr_17 PLUSASSIGN Expr_18 */
6091 #line 2249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6092 {
6093 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6094 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6095 (*yyvalp) = new ASTExprAssign(left, new ASTExprPlus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6096 #line 6097 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6097 break;
6098
6099 case 340: /* Expr_18: Expr_17 MINUSASSIGN Expr_18 */
6100 #line 2254 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6101 {
6102 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6103 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6104 (*yyvalp) = new ASTExprAssign(left, new ASTExprMinus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6105 #line 6106 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6106 break;
6107
6108 case 341: /* Expr_18: Expr_17 TIMESASSIGN Expr_18 */
6109 #line 2259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6110 {
6111 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6112 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6113 (*yyvalp) = new ASTExprAssign(left, new ASTExprTimes(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6114 #line 6115 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6115 break;
6116
6117 case 342: /* Expr_18: Expr_17 DIVIDEASSIGN Expr_18 */
6118 #line 2264 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6119 {
6120 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6121 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6122 (*yyvalp) = new ASTExprAssign(left, new ASTExprDivide(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6123 #line 6124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6124 break;
6125
6126 case 343: /* Expr_18: Expr_17 MODULOASSIGN Expr_18 */
6127 #line 2269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6128 {
6129 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6130 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6131 (*yyvalp) = new ASTExprAssign(left, new ASTExprModulo(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6132 #line 6133 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6133 break;
6134
6135 case 344: /* Expr_18: Expr_17 LSHIFTASSIGN Expr_18 */
6136 #line 2274 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6137 {
6138 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6139 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6140 (*yyvalp) = new ASTExprAssign(left, new ASTExprLShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6141 #line 6142 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6142 break;
6143
6144 case 345: /* Expr_18: Expr_17 RSHIFTASSIGN Expr_18 */
6145 #line 2279 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6146 {
6147 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6148 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6149 (*yyvalp) = new ASTExprAssign(left, new ASTExprRShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6150 #line 6151 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6151 break;
6152
6153 case 346: /* Expr_18: Expr_17 BITANDASSIGN Expr_18 */
6154 #line 2284 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6155 {
6156 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6157 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6158 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6159 #line 6160 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6160 break;
6161
6162 case 347: /* Expr_18: Expr_17 BITNOTASSIGN Expr_18 */
6163 #line 2290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6164 {
6165 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6166 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6167 ASTExprBitAnd* rval = new ASTExprBitAnd(left->clone(), new ASTExprBitNot(right, (*yylocp)), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc));
6168 (*yyvalp) = new ASTExprAssign(left, rval, (*yylocp));}
6169 #line 6170 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6170 break;
6171
6172 case 348: /* Expr_18: Expr_17 BITXORASSIGN Expr_18 */
6173 #line 2296 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6174 {
6175 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6176 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6177 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitXor(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6178 #line 6179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6179 break;
6180
6181 case 349: /* Expr_18: Expr_17 BITORASSIGN Expr_18 */
6182 #line 2301 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6183 {
6184 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6185 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6186 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6187 #line 6188 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6188 break;
6189
6190 case 350: /* Expr_18: Expr_17 ANDASSIGN Expr_18 */
6191 #line 2306 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6192 {
6193 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6194 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6195 (*yyvalp) = new ASTExprAssign(left, new ASTExprAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6196 #line 6197 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6197 break;
6198
6199 case 351: /* Expr_18: Expr_17 ORASSIGN Expr_18 */
6200 #line 2311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6201 {
6202 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6203 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6204 (*yyvalp) = new ASTExprAssign(left, new ASTExprOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6205 #line 6206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6206 break;
6207
6208 case 352: /* Expression: Expr_18 */
6209 #line 2317 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6210 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6211 #line 6212 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6212 break;
6213
6214 case 353: /* Statement_Expression: Expression */
6215 #line 2320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6216 {
6217 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6218 expr = handle_statement_expr(expr);
6219 (*yyvalp) = expr;}
6220 #line 6221 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6221 break;
6222
6223 case 354: /* Expression_Constant: Expression */
6224 #line 2327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6225 {
6226 ASTExpr* content = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6227 (*yyvalp) = new ASTExprConst(content, (*yylocp));}
6228 #line 6229 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6229 break;
6230
6231 case 355: /* Expression_Const_Range: Expression_Range */
6232 #line 2333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6233 {
6234 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6235 ASTExpr* start = range->start.release();
6236 range->start = new ASTExprConst(start, start->location);
6237 ASTExpr* end = range->end.release();
6238 range->end = new ASTExprConst(end, end->location);
6239 (*yyvalp) = range;
6240 }
6241 #line 6242 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6242 break;
6243
6244 case 356: /* Expression_Range: Expression RANGE Expression */
6245 #line 2344 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6246 {
6247 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6248 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6249 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6250 #line 6251 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6251 break;
6252
6253 case 357: /* Expression_Range: Expression RANGE_LR Expression */
6254 #line 2349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6255 {
6256 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6257 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6258 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6259 #line 6260 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6260 break;
6261
6262 case 358: /* Expression_Range: Expression RANGE_L Expression */
6263 #line 2354 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6264 {
6265 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6266 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6267 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6268 #line 6269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6269 break;
6270
6271 case 359: /* Expression_Range: Expression RANGE_R Expression */
6272 #line 2359 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6273 {
6274 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6275 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6276 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6277 #line 6278 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6278 break;
6279
6280 case 360: /* Expression_Range: Expression RANGE_N Expression */
6281 #line 2364 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6282 {
6283 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6284 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6285 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6286 #line 6287 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6287 break;
6288
6289 case 361: /* Expression_Range: LBRACKET Expression COMMA Expression RBRACKET */
6290 #line 2369 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6291 {
6292 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6293 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6294 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6295 #line 6296 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6296 break;
6297
6298 case 362: /* Expression_Range: LBRACKET Expression COMMA Expression RPAREN */
6299 #line 2374 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6300 {
6301 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6302 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6303 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6304 #line 6305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6305 break;
6306
6307 case 363: /* Expression_Range: LPAREN Expression COMMA Expression RBRACKET */
6308 #line 2379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6309 {
6310 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6311 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6312 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6313 #line 6314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6314 break;
6315
6316 case 364: /* Expression_Range: LPAREN Expression COMMA Expression RPAREN */
6317 #line 2384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6318 {
6319 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6320 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6321 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6322 #line 6323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6323 break;
6324
6325 case 365: /* Literal: NUMBER */
6326 #line 2394 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6327 {
6328 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6329 (*yyvalp) = new ASTNumberLiteral(val, (*yylocp));}
6330 #line 6331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6331 break;
6332
6333 case 366: /* Literal: LONGNUMBER */
6334 #line 2397 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6335 {
6336 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6337 (*yyvalp) = new ASTLongNumberLiteral(val, (*yylocp));}
6338 #line 6339 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6339 break;
6340
6341 case 367: /* Literal: SINGLECHAR */
6342 #line 2400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6343 {
6344 ASTString* as = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6345 ASTFloat* number = new ASTFloat(int(as->getValue().at(1)), 0, (*yylocp));
6346 (*yyvalp) = new ASTCharLiteral(number, (*yylocp));}
6347 #line 6348 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6348 break;
6349
6350 case 368: /* Literal: Literal_String */
6351 #line 2404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6352 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6353 #line 6354 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6354 break;
6355
6356 case 369: /* Literal: Literal_Bool */
6357 #line 2405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6358 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6359 #line 6360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6360 break;
6361
6362 case 370: /* Literal: Literal_Array */
6363 #line 2406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6364 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6365 #line 6366 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6366 break;
6367
6368 case 371: /* Literal: OPTIONVALUE LPAREN IDENTIFIER RPAREN */
6369 #line 2407 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6370 {
6371 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6372 (*yyvalp) = new ASTOptionValue(name->getValue(), (*yylocp));
6373 delete name;}
6374 #line 6375 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6375 break;
6376
6377 case 372: /* Literal: ISINCLUDED LPAREN IMPORTSTRING RPAREN */
6378 #line 2411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6379 {
6380 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6381 (*yyvalp) = new ASTIsIncluded(name->getValue(), (*yylocp));
6382 delete name;}
6383 #line 6384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6384 break;
6385
6386 case 373: /* QuotedString: QuotedString QUOTEDSTRING */
6387 #line 2418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6388 {
6389 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6390 ASTString* rawstr = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6391 str->append(rawstr->getValue());
6392 delete rawstr;
6393 (*yyvalp) = str;}
6394 #line 6395 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6395 break;
6396
6397 case 374: /* QuotedString: QUOTEDSTRING */
6398 #line 2424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6399 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6400 #line 6401 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6401 break;
6402
6403 case 375: /* Literal_String: QuotedString */
6404 #line 2428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6405 {
6406 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6407 ASTStringLiteral* str = new ASTStringLiteral(*rawstring);
6408 delete rawstring;
6409 (*yyvalp) = str;}
6410 #line 6411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6411 break;
6412
6413 case 376: /* Literal_Bool: ZTRUE */
6414 #line 2437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6415 {(*yyvalp) = new ASTBoolLiteral(true, (*yylocp));}
6416 #line 6417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6417 break;
6418
6419 case 377: /* Literal_Bool: ZFALSE */
6420 #line 2438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6421 {(*yyvalp) = new ASTBoolLiteral(false, (*yylocp));}
6422 #line 6423 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6423 break;
6424
6425 case 378: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE Literal_Array_Body Trail_Comma_RBrace */
6426 #line 2445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6427 {
6428 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
6429 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
6430 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6431 al->type = type;
6432 al->size = size;
6433 al->location = (*yylocp);
6434 (*yyvalp) = al;
6435 }
6436 #line 6437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6437 break;
6438
6439 case 379: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE RBRACE */
6440 #line 2457 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6441 {
6442 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
6443 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6444 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6445 al->type = type;
6446 al->size = size;
6447 (*yyvalp) = al;
6448 }
6449 #line 6450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6450 break;
6451
6452 case 380: /* Literal_Array: LBRACE Literal_Array_Body Trail_Comma_RBrace */
6453 #line 2466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6454 {
6455 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6456 al->location = (*yylocp);
6457 (*yyvalp) = al;}
6458 #line 6459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6459 break;
6460
6461 case 381: /* Literal_Array_Body: Literal_Array_Body COMMA Expression */
6462 #line 2473 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6463 {
6464 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6465 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6466 al->elements.push_back(element);
6467 (*yyvalp) = al;}
6468 #line 6469 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6469 break;
6470
6471 case 382: /* Literal_Array_Body: Expression */
6472 #line 2478 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6473 {
6474 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6475 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6476 al->elements.push_back(element);
6477 (*yyvalp) = al;}
6478 #line 6479 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6479 break;
6480
6481
6482 #line 6483 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6483
6484 default: break;
6485 }
6486 YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), yyvalp, yylocp);
6487
6488 400008221 return yyok;
6489 # undef yyerrok
6490 # undef YYABORT
6491 # undef YYACCEPT
6492 # undef YYNOMEM
6493 # undef YYERROR
6494 # undef YYBACKUP
6495 # undef yyclearin
6496 # undef YYRECOVERING
6497 }
6498
6499
6500 static void
6501 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
6502 {
6503 YY_USE (yy0);
6504 YY_USE (yy1);
6505
6506 switch (yyn)
6507 {
6508
6509 default: break;
6510 }
6511 }
6512
6513 /* Bison grammar-table manipulation. */
6514
6515 /*-----------------------------------------------.
6516 | Release the memory associated to this symbol. |
6517 `-----------------------------------------------*/
6518
6519 static void
6520 117892 yydestruct (const char *yymsg,
6521 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
6522 {
6523 YY_USE (yyvaluep);
6524 YY_USE (yylocationp);
6525 117892 YY_USE (root);
6526
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 117892 times.
117892 if (!yymsg)
6527 yymsg = "Deleting";
6528 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6529
6530 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6531 YY_USE (yykind);
6532 YY_IGNORE_MAYBE_UNINITIALIZED_END
6533 117892 }
6534
6535 /** Number of symbols composing the right hand side of rule #RULE. */
6536 static inline int
6537 400035622 yyrhsLength (yyRuleNum yyrule)
6538 {
6539 400035622 return yyr2[yyrule];
6540 }
6541
6542 static void
6543 117835 yydestroyGLRState (char const *yymsg, yyGLRState *yys, std::shared_ptr<ZScript::ASTFile>& root)
6544 {
6545
1/2
✓ Branch 0 taken 117835 times.
✗ Branch 1 not taken.
117835 if (yys->yyresolved)
6546 235670 yydestruct (yymsg, yy_accessing_symbol (yys->yylrState),
6547 117835 &yys->yysemantics.yyval, &yys->yyloc, root);
6548 else
6549 {
6550 #if YYDEBUG
6551 if (yydebug)
6552 {
6553 if (yys->yysemantics.yyfirstVal)
6554 YY_FPRINTF ((stderr, "%s unresolved", yymsg));
6555 else
6556 YY_FPRINTF ((stderr, "%s incomplete", yymsg));
6557 YY_SYMBOL_PRINT ("", yy_accessing_symbol (yys->yylrState), YY_NULLPTR, &yys->yyloc);
6558 }
6559 #endif
6560
6561 if (yys->yysemantics.yyfirstVal)
6562 {
6563 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
6564 yyGLRState *yyrh;
6565 int yyn;
6566 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
6567 yyn > 0;
6568 yyrh = yyrh->yypred, yyn -= 1)
6569 yydestroyGLRState (yymsg, yyrh, root);
6570 }
6571 }
6572 117835 }
6573
6574 #define yypact_value_is_default(Yyn) \
6575 ((Yyn) == YYPACT_NINF)
6576
6577 /** True iff LR state YYSTATE has only a default reduction (regardless
6578 * of token). */
6579 static inline yybool
6580 765672499 yyisDefaultedState (yy_state_t yystate)
6581 {
6582 765672499 return yypact_value_is_default (yypact[yystate]);
6583 }
6584
6585 /** The default reduction for YYSTATE, assuming it has one. */
6586 static inline yyRuleNum
6587 187804557 yydefaultAction (yy_state_t yystate)
6588 {
6589 187804557 return yydefact[yystate];
6590 }
6591
6592 #define yytable_value_is_error(Yyn) \
6593 0
6594
6595 /** The action to take in YYSTATE on seeing YYTOKEN.
6596 * Result R means
6597 * R < 0: Reduce on rule -R.
6598 * R = 0: Error.
6599 * R > 0: Shift to state R.
6600 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
6601 * of conflicting reductions.
6602 */
6603 static inline int
6604 288935862 yygetLRActions (yy_state_t yystate, yysymbol_kind_t yytoken, const short** yyconflicts)
6605 {
6606 288935862 int yyindex = yypact[yystate] + yytoken;
6607
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 288935862 times.
288935862 if (yytoken == YYSYMBOL_YYerror)
6608 {
6609 // This is the error token.
6610 *yyconflicts = yyconfl;
6611 return 0;
6612 }
6613
2/2
✓ Branch 0 taken 209268988 times.
✓ Branch 1 taken 79666874 times.
577871724 else if (yyisDefaultedState (yystate)
6614
3/6
✓ Branch 0 taken 288935862 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 288935862 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 288935862 times.
✗ Branch 5 not taken.
288935862 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
6615 {
6616 209268988 *yyconflicts = yyconfl;
6617 209268988 return -yydefact[yystate];
6618 }
6619 else if (! yytable_value_is_error (yytable[yyindex]))
6620 {
6621 79666874 *yyconflicts = yyconfl + yyconflp[yyindex];
6622 79666874 return yytable[yyindex];
6623 }
6624 else
6625 {
6626 *yyconflicts = yyconfl + yyconflp[yyindex];
6627 return 0;
6628 }
6629 288935862 }
6630
6631 /** Compute post-reduction state.
6632 * \param yystate the current state
6633 * \param yysym the nonterminal to push on the stack
6634 */
6635 static inline yy_state_t
6636 400035622 yyLRgotoState (yy_state_t yystate, yysymbol_kind_t yysym)
6637 {
6638 400035622 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
6639
5/6
✓ Branch 0 taken 311102868 times.
✓ Branch 1 taken 88932754 times.
✓ Branch 2 taken 311102868 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 61664963 times.
✓ Branch 5 taken 249437905 times.
400035622 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
6640 61664963 return yytable[yyr];
6641 else
6642 338370659 return yydefgoto[yysym - YYNTOKENS];
6643 400035622 }
6644
6645 static inline yybool
6646 288928298 yyisShiftAction (int yyaction)
6647 {
6648 288928298 return 0 < yyaction;
6649 }
6650
6651 static inline yybool
6652 212231122 yyisErrorAction (int yyaction)
6653 {
6654 212231122 return yyaction == 0;
6655 }
6656
6657 /* GLRStates */
6658
6659 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
6660 * if YYISSTATE, and otherwise a semantic option. Callers should call
6661 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
6662 * headroom. */
6663
6664 static inline yyGLRStackItem*
6665 476818956 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
6666 {
6667 476818956 yyGLRStackItem* yynewItem = yystackp->yynextFree;
6668 476818956 yystackp->yyspaceLeft -= 1;
6669 476818956 yystackp->yynextFree += 1;
6670 476818956 yynewItem->yystate.yyisState = yyisState;
6671 476818956 return yynewItem;
6672 }
6673
6674 /** Add a new semantic action that will execute the action for rule
6675 * YYRULE on the semantic values in YYRHS to the list of
6676 * alternative actions for YYSTATE. Assumes that YYRHS comes from
6677 * stack #YYK of *YYSTACKP. */
6678 static void
6679 27401 yyaddDeferredAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyGLRState* yystate,
6680 yyGLRState* yyrhs, yyRuleNum yyrule)
6681 {
6682 27401 yySemanticOption* yynewOption =
6683 27401 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
6684 YY_ASSERT (!yynewOption->yyisState);
6685 27401 yynewOption->yystate = yyrhs;
6686 27401 yynewOption->yyrule = yyrule;
6687
1/2
✓ Branch 0 taken 27401 times.
✗ Branch 1 not taken.
27401 if (yystackp->yytops.yylookaheadNeeds[yyk])
6688 {
6689 27401 yynewOption->yyrawchar = yychar;
6690 27401 yynewOption->yyval = yylval;
6691 27401 yynewOption->yyloc = yylloc;
6692 27401 }
6693 else
6694 yynewOption->yyrawchar = TOK_YYEMPTY;
6695 27401 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
6696 27401 yystate->yysemantics.yyfirstVal = yynewOption;
6697
6698
1/2
✓ Branch 0 taken 27401 times.
✗ Branch 1 not taken.
27401 YY_RESERVE_GLRSTACK (yystackp);
6699 27401 }
6700
6701 /* GLRStacks */
6702
6703 /** Initialize YYSET to a singleton set containing an empty stack. */
6704 static yybool
6705 58757 yyinitStateSet (yyGLRStateSet* yyset)
6706 {
6707 58757 yyset->yysize = 1;
6708 58757 yyset->yycapacity = 16;
6709 58757 yyset->yystates
6710 117514 = YY_CAST (yyGLRState**,
6711 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6712 * sizeof yyset->yystates[0]));
6713
1/2
✓ Branch 0 taken 58757 times.
✗ Branch 1 not taken.
58757 if (! yyset->yystates)
6714 return yyfalse;
6715 58757 yyset->yystates[0] = YY_NULLPTR;
6716 58757 yyset->yylookaheadNeeds
6717 117514 = YY_CAST (yybool*,
6718 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6719 * sizeof yyset->yylookaheadNeeds[0]));
6720
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 58757 times.
58757 if (! yyset->yylookaheadNeeds)
6721 {
6722 YYFREE (yyset->yystates);
6723 return yyfalse;
6724 }
6725 117514 memset (yyset->yylookaheadNeeds,
6726 0,
6727 58757 YY_CAST (YYSIZE_T, yyset->yycapacity) * sizeof yyset->yylookaheadNeeds[0]);
6728 58757 return yytrue;
6729 58757 }
6730
6731 58757 static void yyfreeStateSet (yyGLRStateSet* yyset)
6732 {
6733 58757 YYFREE (yyset->yystates);
6734 58757 YYFREE (yyset->yylookaheadNeeds);
6735 58757 }
6736
6737 /** Initialize *YYSTACKP to a single empty stack, with total maximum
6738 * capacity for all stacks of YYSIZE. */
6739 static yybool
6740 58757 yyinitGLRStack (yyGLRStack* yystackp, YYPTRDIFF_T yysize)
6741 {
6742 58757 yystackp->yyerrState = 0;
6743 58757 yynerrs = 0;
6744 58757 yystackp->yyspaceLeft = yysize;
6745 58757 yystackp->yyitems
6746 117514 = YY_CAST (yyGLRStackItem*,
6747 YYMALLOC (YY_CAST (YYSIZE_T, yysize)
6748 * sizeof yystackp->yynextFree[0]));
6749
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 58757 times.
58757 if (!yystackp->yyitems)
6750 return yyfalse;
6751 58757 yystackp->yynextFree = yystackp->yyitems;
6752 58757 yystackp->yysplitPoint = YY_NULLPTR;
6753 58757 yystackp->yylastDeleted = YY_NULLPTR;
6754 58757 return yyinitStateSet (&yystackp->yytops);
6755 58757 }
6756
6757
6758 #if YYSTACKEXPANDABLE
6759 # define YYRELOC(YYFROMITEMS, YYTOITEMS, YYX, YYTYPE) \
6760 &((YYTOITEMS) \
6761 - ((YYFROMITEMS) - YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX))))->YYTYPE
6762
6763 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
6764 stack from outside should be considered invalid after this call.
6765 We always expand when there are 1 or fewer items left AFTER an
6766 allocation, so that we can avoid having external pointers exist
6767 across an allocation. */
6768 static void
6769 yyexpandGLRStack (yyGLRStack* yystackp)
6770 {
6771 yyGLRStackItem* yynewItems;
6772 yyGLRStackItem* yyp0, *yyp1;
6773 YYPTRDIFF_T yynewSize;
6774 YYPTRDIFF_T yyn;
6775 YYPTRDIFF_T yysize = yystackp->yynextFree - yystackp->yyitems;
6776 if (YYMAXDEPTH - YYHEADROOM < yysize)
6777 yyMemoryExhausted (yystackp);
6778 yynewSize = 2*yysize;
6779 if (YYMAXDEPTH < yynewSize)
6780 yynewSize = YYMAXDEPTH;
6781 yynewItems
6782 = YY_CAST (yyGLRStackItem*,
6783 YYMALLOC (YY_CAST (YYSIZE_T, yynewSize)
6784 * sizeof yynewItems[0]));
6785 if (! yynewItems)
6786 yyMemoryExhausted (yystackp);
6787 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
6788 0 < yyn;
6789 yyn -= 1, yyp0 += 1, yyp1 += 1)
6790 {
6791 *yyp1 = *yyp0;
6792 if (*YY_REINTERPRET_CAST (yybool *, yyp0))
6793 {
6794 yyGLRState* yys0 = &yyp0->yystate;
6795 yyGLRState* yys1 = &yyp1->yystate;
6796 if (yys0->yypred != YY_NULLPTR)
6797 yys1->yypred =
6798 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
6799 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
6800 yys1->yysemantics.yyfirstVal =
6801 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
6802 }
6803 else
6804 {
6805 yySemanticOption* yyv0 = &yyp0->yyoption;
6806 yySemanticOption* yyv1 = &yyp1->yyoption;
6807 if (yyv0->yystate != YY_NULLPTR)
6808 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
6809 if (yyv0->yynext != YY_NULLPTR)
6810 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
6811 }
6812 }
6813 if (yystackp->yysplitPoint != YY_NULLPTR)
6814 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
6815 yystackp->yysplitPoint, yystate);
6816
6817 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
6818 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
6819 yystackp->yytops.yystates[yyn] =
6820 YYRELOC (yystackp->yyitems, yynewItems,
6821 yystackp->yytops.yystates[yyn], yystate);
6822 YYFREE (yystackp->yyitems);
6823 yystackp->yyitems = yynewItems;
6824 yystackp->yynextFree = yynewItems + yysize;
6825 yystackp->yyspaceLeft = yynewSize - yysize;
6826 }
6827 #endif
6828
6829 static void
6830 58757 yyfreeGLRStack (yyGLRStack* yystackp)
6831 {
6832 58757 YYFREE (yystackp->yyitems);
6833 58757 yyfreeStateSet (&yystackp->yytops);
6834 58757 }
6835
6836 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
6837 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
6838 * YYS. */
6839 static inline void
6840 27401 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
6841 {
6842
3/4
✓ Branch 0 taken 27401 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23577 times.
✓ Branch 3 taken 3824 times.
27401 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
6843 3824 yystackp->yysplitPoint = yys;
6844 27401 }
6845
6846 /** Invalidate stack #YYK in *YYSTACKP. */
6847 static inline void
6848 3782 yymarkStackDeleted (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
6849 {
6850
1/2
✓ Branch 0 taken 3782 times.
✗ Branch 1 not taken.
3782 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
6851 3782 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
6852 3782 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
6853 3782 }
6854
6855 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
6856 only be done once after a deletion, and only when all other stacks have
6857 been deleted. */
6858 static void
6859 yyundeleteLastStack (yyGLRStack* yystackp)
6860 {
6861 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
6862 return;
6863 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
6864 yystackp->yytops.yysize = 1;
6865 YY_DPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
6866 yystackp->yylastDeleted = YY_NULLPTR;
6867 }
6868
6869 static inline void
6870 3839 yyremoveDeletes (yyGLRStack* yystackp)
6871 {
6872 YYPTRDIFF_T yyi, yyj;
6873 3839 yyi = yyj = 0;
6874
2/2
✓ Branch 0 taken 7621 times.
✓ Branch 1 taken 3839 times.
11460 while (yyj < yystackp->yytops.yysize)
6875 {
6876
2/2
✓ Branch 0 taken 3839 times.
✓ Branch 1 taken 3782 times.
7621 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
6877 {
6878
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3782 times.
3782 if (yyi == yyj)
6879 3782 YY_DPRINTF ((stderr, "Removing dead stacks.\n"));
6880 3782 yystackp->yytops.yysize -= 1;
6881 3782 }
6882 else
6883 {
6884 3839 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
6885 /* In the current implementation, it's unnecessary to copy
6886 yystackp->yytops.yylookaheadNeeds[yyi] since, after
6887 yyremoveDeletes returns, the parser immediately either enters
6888 deterministic operation or shifts a token. However, it doesn't
6889 hurt, and the code might evolve to need it. */
6890 3839 yystackp->yytops.yylookaheadNeeds[yyj] =
6891 3839 yystackp->yytops.yylookaheadNeeds[yyi];
6892
1/2
✓ Branch 0 taken 3839 times.
✗ Branch 1 not taken.
3839 if (yyj != yyi)
6893 YY_DPRINTF ((stderr, "Rename stack %ld -> %ld.\n",
6894 YY_CAST (long, yyi), YY_CAST (long, yyj)));
6895 3839 yyj += 1;
6896 }
6897 7621 yyi += 1;
6898 }
6899 3839 }
6900
6901 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
6902 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
6903 * value *YYVALP and source location *YYLOCP. */
6904 static inline void
6905 476764154 yyglrShift (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6906 YYPTRDIFF_T yyposn,
6907 YYSTYPE* yyvalp, YYLTYPE* yylocp)
6908 {
6909 476764154 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6910
6911 476764154 yynewState->yylrState = yylrState;
6912 476764154 yynewState->yyposn = yyposn;
6913 476764154 yynewState->yyresolved = yytrue;
6914 476764154 yynewState->yypred = yystackp->yytops.yystates[yyk];
6915 476764154 yynewState->yysemantics.yyval = *yyvalp;
6916 476764154 yynewState->yyloc = *yylocp;
6917 476764154 yystackp->yytops.yystates[yyk] = yynewState;
6918
6919
1/2
✓ Branch 0 taken 476764154 times.
✗ Branch 1 not taken.
476764154 YY_RESERVE_GLRSTACK (yystackp);
6920 476764154 }
6921
6922 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
6923 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
6924 * semantic value of YYRHS under the action for YYRULE. */
6925 static inline void
6926 27401 yyglrShiftDefer (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6927 YYPTRDIFF_T yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
6928 {
6929 27401 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6930 YY_ASSERT (yynewState->yyisState);
6931
6932 27401 yynewState->yylrState = yylrState;
6933 27401 yynewState->yyposn = yyposn;
6934 27401 yynewState->yyresolved = yyfalse;
6935 27401 yynewState->yypred = yystackp->yytops.yystates[yyk];
6936 27401 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
6937 27401 yystackp->yytops.yystates[yyk] = yynewState;
6938
6939 /* Invokes YY_RESERVE_GLRSTACK. */
6940 27401 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
6941 27401 }
6942
6943 #if YYDEBUG
6944
6945 /*----------------------------------------------------------------------.
6946 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
6947 `----------------------------------------------------------------------*/
6948
6949 static inline void
6950 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
6951 yyRuleNum yyrule, std::shared_ptr<ZScript::ASTFile>& root)
6952 {
6953 int yynrhs = yyrhsLength (yyrule);
6954 int yylow = 1;
6955 int yyi;
6956 YY_FPRINTF ((stderr, "Reducing stack %ld by rule %d (line %d):\n",
6957 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6958 if (! yynormal)
6959 yyfillin (yyvsp, 1, -yynrhs);
6960 /* The symbols being reduced. */
6961 for (yyi = 0; yyi < yynrhs; yyi++)
6962 {
6963 YY_FPRINTF ((stderr, " $%d = ", yyi + 1));
6964 yy_symbol_print (stderr,
6965 yy_accessing_symbol (yyvsp[yyi - yynrhs + 1].yystate.yylrState),
6966 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yyval,
6967 &(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , root);
6968 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
6969 YY_FPRINTF ((stderr, " (unresolved)"));
6970 YY_FPRINTF ((stderr, "\n"));
6971 }
6972 }
6973 #endif
6974
6975 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
6976 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
6977 * semantic values. Assumes that all ambiguities in semantic values
6978 * have been previously resolved. Set *YYVALP to the resulting value,
6979 * and *YYLOCP to the computed location (if any). Return value is as
6980 * for userAction. */
6981 static inline YYRESULTTAG
6982 400008221 yydoAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6983 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
6984 {
6985 400008221 int yynrhs = yyrhsLength (yyrule);
6986
6987
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 400008221 times.
400008221 if (yystackp->yysplitPoint == YY_NULLPTR)
6988 {
6989 /* Standard special case: single stack. */
6990 400008221 yyGLRStackItem* yyrhs
6991 400008221 = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yytops.yystates[yyk]);
6992 YY_ASSERT (yyk == 0);
6993 400008221 yystackp->yynextFree -= yynrhs;
6994 400008221 yystackp->yyspaceLeft += yynrhs;
6995 400008221 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
6996 800016442 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp, yyk,
6997 400008221 yyvalp, yylocp, root);
6998 }
6999 else
7000 {
7001 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7002 yyGLRState* yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
7003 = yystackp->yytops.yystates[yyk];
7004 int yyi;
7005 if (yynrhs == 0)
7006 /* Set default location. */
7007 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;
7008 for (yyi = 0; yyi < yynrhs; yyi += 1)
7009 {
7010 yys = yys->yypred;
7011 YY_ASSERT (yys);
7012 }
7013 yyupdateSplit (yystackp, yys);
7014 yystackp->yytops.yystates[yyk] = yys;
7015 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7016 yystackp, yyk, yyvalp, yylocp, root);
7017 }
7018 400008221 }
7019
7020 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
7021 * and push back on the resulting nonterminal symbol. Perform the
7022 * semantic action associated with YYRULE and store its value with the
7023 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
7024 * unambiguous. Otherwise, store the deferred semantic action with
7025 * the new state. If the new state would have an identical input
7026 * position, LR state, and predecessor to an existing state on the stack,
7027 * it is identified with that existing state, eliminating stack #YYK from
7028 * *YYSTACKP. In this case, the semantic value is
7029 * added to the options for the existing state's semantic value.
7030 */
7031 static inline YYRESULTTAG
7032 400035622 yyglrReduce (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
7033 yybool yyforceEval, std::shared_ptr<ZScript::ASTFile>& root)
7034 {
7035 400035622 YYPTRDIFF_T yyposn = yystackp->yytops.yystates[yyk]->yyposn;
7036
7037
3/4
✓ Branch 0 taken 27401 times.
✓ Branch 1 taken 400008221 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 27401 times.
400035622 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
7038 {
7039 YYSTYPE yyval;
7040 YYLTYPE yyloc;
7041
7042 400008221 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yyval, &yyloc, root);
7043
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 400008221 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
400008221 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
7044 YY_DPRINTF ((stderr,
7045 "Parse on stack %ld rejected by rule %d (line %d).\n",
7046 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
7047
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 400008221 times.
400008221 if (yyflag != yyok)
7048 return yyflag;
7049 800016442 yyglrShift (yystackp, yyk,
7050 800016442 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
7051 400008221 yylhsNonterm (yyrule)),
7052 400008221 yyposn, &yyval, &yyloc);
7053 400008221 }
7054 else
7055 {
7056 YYPTRDIFF_T yyi;
7057 int yyn;
7058 27401 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
7059 yy_state_t yynewLRState;
7060
7061
2/2
✓ Branch 0 taken 30044 times.
✓ Branch 1 taken 27401 times.
57445 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
7062 57445 0 < yyn; yyn -= 1)
7063 {
7064 30044 yys = yys->yypred;
7065 YY_ASSERT (yys);
7066 30044 }
7067 27401 yyupdateSplit (yystackp, yys);
7068 27401 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
7069 27401 YY_DPRINTF ((stderr,
7070 "Reduced stack %ld by rule %d (line %d); action deferred. "
7071 "Now in state %d.\n",
7072 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule],
7073 yynewLRState));
7074
2/2
✓ Branch 0 taken 27401 times.
✓ Branch 1 taken 54802 times.
82203 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
7075
3/4
✓ Branch 0 taken 27401 times.
✓ Branch 1 taken 27401 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 27401 times.
82203 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
7076 {
7077 27401 yyGLRState *yysplit = yystackp->yysplitPoint;
7078 27401 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
7079
5/6
✓ Branch 0 taken 30023 times.
✓ Branch 1 taken 24779 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 30023 times.
✓ Branch 4 taken 27401 times.
✓ Branch 5 taken 27401 times.
54802 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
7080 {
7081
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 27401 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
27401 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
7082 {
7083 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
7084 yymarkStackDeleted (yystackp, yyk);
7085 YY_DPRINTF ((stderr, "Merging stack %ld into stack %ld.\n",
7086 YY_CAST (long, yyk), YY_CAST (long, yyi)));
7087 return yyok;
7088 }
7089 27401 yyp = yyp->yypred;
7090 }
7091 27401 }
7092 27401 yystackp->yytops.yystates[yyk] = yys;
7093 27401 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
7094 }
7095 400035622 return yyok;
7096 400035622 }
7097
7098 static YYPTRDIFF_T
7099 3782 yysplitStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
7100 {
7101
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3782 times.
3782 if (yystackp->yysplitPoint == YY_NULLPTR)
7102 {
7103 YY_ASSERT (yyk == 0);
7104 3782 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
7105 3782 }
7106
1/2
✓ Branch 0 taken 3782 times.
✗ Branch 1 not taken.
3782 if (yystackp->yytops.yycapacity <= yystackp->yytops.yysize)
7107 {
7108 YYPTRDIFF_T state_size = YYSIZEOF (yystackp->yytops.yystates[0]);
7109 YYPTRDIFF_T half_max_capacity = YYSIZE_MAXIMUM / 2 / state_size;
7110 if (half_max_capacity < yystackp->yytops.yycapacity)
7111 yyMemoryExhausted (yystackp);
7112 yystackp->yytops.yycapacity *= 2;
7113
7114 {
7115 yyGLRState** yynewStates
7116 = YY_CAST (yyGLRState**,
7117 YYREALLOC (yystackp->yytops.yystates,
7118 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7119 * sizeof yynewStates[0])));
7120 if (yynewStates == YY_NULLPTR)
7121 yyMemoryExhausted (yystackp);
7122 yystackp->yytops.yystates = yynewStates;
7123 }
7124
7125 {
7126 yybool* yynewLookaheadNeeds
7127 = YY_CAST (yybool*,
7128 YYREALLOC (yystackp->yytops.yylookaheadNeeds,
7129 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7130 * sizeof yynewLookaheadNeeds[0])));
7131 if (yynewLookaheadNeeds == YY_NULLPTR)
7132 yyMemoryExhausted (yystackp);
7133 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
7134 }
7135 }
7136 3782 yystackp->yytops.yystates[yystackp->yytops.yysize]
7137 7564 = yystackp->yytops.yystates[yyk];
7138 3782 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
7139 7564 = yystackp->yytops.yylookaheadNeeds[yyk];
7140 3782 yystackp->yytops.yysize += 1;
7141 3782 return yystackp->yytops.yysize - 1;
7142 }
7143
7144 /** True iff YYY0 and YYY1 represent identical options at the top level.
7145 * That is, they represent the same rule applied to RHS symbols
7146 * that produce the same terminal symbols. */
7147 static yybool
7148 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
7149 {
7150 if (yyy0->yyrule == yyy1->yyrule)
7151 {
7152 yyGLRState *yys0, *yys1;
7153 int yyn;
7154 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7155 yyn = yyrhsLength (yyy0->yyrule);
7156 yyn > 0;
7157 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7158 if (yys0->yyposn != yys1->yyposn)
7159 return yyfalse;
7160 return yytrue;
7161 }
7162 else
7163 return yyfalse;
7164 }
7165
7166 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
7167 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
7168 static void
7169 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
7170 {
7171 yyGLRState *yys0, *yys1;
7172 int yyn;
7173 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7174 yyn = yyrhsLength (yyy0->yyrule);
7175 0 < yyn;
7176 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7177 {
7178 if (yys0 == yys1)
7179 break;
7180 else if (yys0->yyresolved)
7181 {
7182 yys1->yyresolved = yytrue;
7183 yys1->yysemantics.yyval = yys0->yysemantics.yyval;
7184 }
7185 else if (yys1->yyresolved)
7186 {
7187 yys0->yyresolved = yytrue;
7188 yys0->yysemantics.yyval = yys1->yysemantics.yyval;
7189 }
7190 else
7191 {
7192 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
7193 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
7194 while (yytrue)
7195 {
7196 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
7197 break;
7198 else if (*yyz0p == YY_NULLPTR)
7199 {
7200 *yyz0p = yyz1;
7201 break;
7202 }
7203 else if (*yyz0p < yyz1)
7204 {
7205 yySemanticOption* yyz = *yyz0p;
7206 *yyz0p = yyz1;
7207 yyz1 = yyz1->yynext;
7208 (*yyz0p)->yynext = yyz;
7209 }
7210 yyz0p = &(*yyz0p)->yynext;
7211 }
7212 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
7213 }
7214 }
7215 }
7216
7217 /** Y0 and Y1 represent two possible actions to take in a given
7218 * parsing state; return 0 if no combination is possible,
7219 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
7220 static int
7221 yypreference (yySemanticOption* y0, yySemanticOption* y1)
7222 {
7223 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
7224 int p0 = yydprec[r0], p1 = yydprec[r1];
7225
7226 if (p0 == p1)
7227 {
7228 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
7229 return 0;
7230 else
7231 return 1;
7232 }
7233 if (p0 == 0 || p1 == 0)
7234 return 0;
7235 if (p0 < p1)
7236 return 3;
7237 if (p1 < p0)
7238 return 2;
7239 return 0;
7240 }
7241
7242 static YYRESULTTAG
7243 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root);
7244
7245
7246 /** Resolve the previous YYN states starting at and including state YYS
7247 * on *YYSTACKP. If result != yyok, some states may have been left
7248 * unresolved possibly with empty semantic option chains. Regardless
7249 * of whether result = yyok, each state has been left with consistent
7250 * data so that yydestroyGLRState can be invoked if necessary. */
7251 static YYRESULTTAG
7252 13989 yyresolveStates (yyGLRState* yys, int yyn,
7253 yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7254 {
7255
2/2
✓ Branch 0 taken 3782 times.
✓ Branch 1 taken 10207 times.
13989 if (0 < yyn)
7256 {
7257 YY_ASSERT (yys->yypred);
7258
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10207 times.
10207 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, root));
7259
1/2
✓ Branch 0 taken 10207 times.
✗ Branch 1 not taken.
10207 if (! yys->yyresolved)
7260 YYCHK (yyresolveValue (yys, yystackp, root));
7261 10207 }
7262 13989 return yyok;
7263 13989 }
7264
7265 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
7266 * user action, and return the semantic value and location in *YYVALP
7267 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
7268 * have been destroyed (assuming the user action destroys all RHS
7269 * semantic values if invoked). */
7270 static YYRESULTTAG
7271 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
7272 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
7273 {
7274 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7275 int yynrhs = yyrhsLength (yyopt->yyrule);
7276 YYRESULTTAG yyflag =
7277 yyresolveStates (yyopt->yystate, yynrhs, yystackp, root);
7278 if (yyflag != yyok)
7279 {
7280 yyGLRState *yys;
7281 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
7282 yydestroyGLRState ("Cleanup: popping", yys, root);
7283 return yyflag;
7284 }
7285
7286 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
7287 if (yynrhs == 0)
7288 /* Set default location. */
7289 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;
7290 {
7291 int yychar_current = yychar;
7292 YYSTYPE yylval_current = yylval;
7293 YYLTYPE yylloc_current = yylloc;
7294 yychar = yyopt->yyrawchar;
7295 yylval = yyopt->yyval;
7296 yylloc = yyopt->yyloc;
7297 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
7298 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7299 yystackp, -1, yyvalp, yylocp, root);
7300 yychar = yychar_current;
7301 yylval = yylval_current;
7302 yylloc = yylloc_current;
7303 }
7304 return yyflag;
7305 }
7306
7307 #if YYDEBUG
7308 static void
7309 yyreportTree (yySemanticOption* yyx, int yyindent)
7310 {
7311 int yynrhs = yyrhsLength (yyx->yyrule);
7312 int yyi;
7313 yyGLRState* yys;
7314 yyGLRState* yystates[1 + YYMAXRHS];
7315 yyGLRState yyleftmost_state;
7316
7317 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
7318 yystates[yyi] = yys;
7319 if (yys == YY_NULLPTR)
7320 {
7321 yyleftmost_state.yyposn = 0;
7322 yystates[0] = &yyleftmost_state;
7323 }
7324 else
7325 yystates[0] = yys;
7326
7327 if (yyx->yystate->yyposn < yys->yyposn + 1)
7328 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, empty>\n",
7329 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7330 yyx->yyrule - 1));
7331 else
7332 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, tokens %ld .. %ld>\n",
7333 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7334 yyx->yyrule - 1, YY_CAST (long, yys->yyposn + 1),
7335 YY_CAST (long, yyx->yystate->yyposn)));
7336 for (yyi = 1; yyi <= yynrhs; yyi += 1)
7337 {
7338 if (yystates[yyi]->yyresolved)
7339 {
7340 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
7341 YY_FPRINTF ((stderr, "%*s%s <empty>\n", yyindent+2, "",
7342 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState))));
7343 else
7344 YY_FPRINTF ((stderr, "%*s%s <tokens %ld .. %ld>\n", yyindent+2, "",
7345 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState)),
7346 YY_CAST (long, yystates[yyi-1]->yyposn + 1),
7347 YY_CAST (long, yystates[yyi]->yyposn)));
7348 }
7349 else
7350 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
7351 }
7352 }
7353 #endif
7354
7355 static YYRESULTTAG
7356 yyreportAmbiguity (yySemanticOption* yyx0,
7357 yySemanticOption* yyx1, std::shared_ptr<ZScript::ASTFile>& root)
7358 {
7359 YY_USE (yyx0);
7360 YY_USE (yyx1);
7361
7362 #if YYDEBUG
7363 YY_FPRINTF ((stderr, "Ambiguity detected.\n"));
7364 YY_FPRINTF ((stderr, "Option 1,\n"));
7365 yyreportTree (yyx0, 2);
7366 YY_FPRINTF ((stderr, "\nOption 2,\n"));
7367 yyreportTree (yyx1, 2);
7368 YY_FPRINTF ((stderr, "\n"));
7369 #endif
7370
7371 yyerror (root, YY_("syntax is ambiguous"));
7372 return yyabort;
7373 }
7374
7375 /** Resolve the locations for each of the YYN1 states in *YYSTACKP,
7376 * ending at YYS1. Has no effect on previously resolved states.
7377 * The first semantic option of a state is always chosen. */
7378 static void
7379 yyresolveLocations (yyGLRState *yys1, int yyn1,
7380 yyGLRStack *yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7381 {
7382 if (0 < yyn1)
7383 {
7384 yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, root);
7385 if (!yys1->yyresolved)
7386 {
7387 yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
7388 int yynrhs;
7389 yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal;
7390 YY_ASSERT (yyoption);
7391 yynrhs = yyrhsLength (yyoption->yyrule);
7392 if (0 < yynrhs)
7393 {
7394 yyGLRState *yys;
7395 int yyn;
7396 yyresolveLocations (yyoption->yystate, yynrhs,
7397 yystackp, root);
7398 for (yys = yyoption->yystate, yyn = yynrhs;
7399 yyn > 0;
7400 yys = yys->yypred, yyn -= 1)
7401 yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
7402 }
7403 else
7404 {
7405 /* Both yyresolveAction and yyresolveLocations traverse the GSS
7406 in reverse rightmost order. It is only necessary to invoke
7407 yyresolveLocations on a subforest for which yyresolveAction
7408 would have been invoked next had an ambiguity not been
7409 detected. Thus the location of the previous state (but not
7410 necessarily the previous state itself) is guaranteed to be
7411 resolved already. */
7412 yyGLRState *yyprevious = yyoption->yystate;
7413 yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
7414 }
7415 YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
7416 }
7417 }
7418 }
7419
7420 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
7421 * perform the indicated actions, and set the semantic value of YYS.
7422 * If result != yyok, the chain of semantic options in YYS has been
7423 * cleared instead or it has been left unmodified except that
7424 * redundant options may have been removed. Regardless of whether
7425 * result = yyok, YYS has been left with consistent data so that
7426 * yydestroyGLRState can be invoked if necessary. */
7427 static YYRESULTTAG
7428 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7429 {
7430 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
7431 yySemanticOption* yybest = yyoptionList;
7432 yySemanticOption** yypp;
7433 yybool yymerge = yyfalse;
7434 YYSTYPE yyval;
7435 YYRESULTTAG yyflag;
7436 YYLTYPE *yylocp = &yys->yyloc;
7437
7438 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
7439 {
7440 yySemanticOption* yyp = *yypp;
7441
7442 if (yyidenticalOptions (yybest, yyp))
7443 {
7444 yymergeOptionSets (yybest, yyp);
7445 *yypp = yyp->yynext;
7446 }
7447 else
7448 {
7449 switch (yypreference (yybest, yyp))
7450 {
7451 case 0:
7452 yyresolveLocations (yys, 1, yystackp, root);
7453 return yyreportAmbiguity (yybest, yyp, root);
7454 break;
7455 case 1:
7456 yymerge = yytrue;
7457 break;
7458 case 2:
7459 break;
7460 case 3:
7461 yybest = yyp;
7462 yymerge = yyfalse;
7463 break;
7464 default:
7465 /* This cannot happen so it is not worth a YY_ASSERT (yyfalse),
7466 but some compilers complain if the default case is
7467 omitted. */
7468 break;
7469 }
7470 yypp = &yyp->yynext;
7471 }
7472 }
7473
7474 if (yymerge)
7475 {
7476 yySemanticOption* yyp;
7477 int yyprec = yydprec[yybest->yyrule];
7478 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7479 if (yyflag == yyok)
7480 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
7481 {
7482 if (yyprec == yydprec[yyp->yyrule])
7483 {
7484 YYSTYPE yyval_other;
7485 YYLTYPE yydummy;
7486 yyflag = yyresolveAction (yyp, yystackp, &yyval_other, &yydummy, root);
7487 if (yyflag != yyok)
7488 {
7489 yydestruct ("Cleanup: discarding incompletely merged value for",
7490 yy_accessing_symbol (yys->yylrState),
7491 &yyval, yylocp, root);
7492 break;
7493 }
7494 yyuserMerge (yymerger[yyp->yyrule], &yyval, &yyval_other);
7495 }
7496 }
7497 }
7498 else
7499 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7500
7501 if (yyflag == yyok)
7502 {
7503 yys->yyresolved = yytrue;
7504 yys->yysemantics.yyval = yyval;
7505 }
7506 else
7507 yys->yysemantics.yyfirstVal = YY_NULLPTR;
7508 return yyflag;
7509 }
7510
7511 static YYRESULTTAG
7512 3782 yyresolveStack (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7513 {
7514
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3782 times.
3782 if (yystackp->yysplitPoint != YY_NULLPTR)
7515 {
7516 yyGLRState* yys;
7517 int yyn;
7518
7519
2/2
✓ Branch 0 taken 10207 times.
✓ Branch 1 taken 3782 times.
13989 for (yyn = 0, yys = yystackp->yytops.yystates[0];
7520 13989 yys != yystackp->yysplitPoint;
7521 10207 yys = yys->yypred, yyn += 1)
7522 10207 continue;
7523
1/2
✓ Branch 0 taken 3782 times.
✗ Branch 1 not taken.
3782 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
7524 , root));
7525 3782 }
7526 3782 return yyok;
7527 3782 }
7528
7529 /** Called when returning to deterministic operation to clean up the extra
7530 * stacks. */
7531 static void
7532 3839 yycompressStack (yyGLRStack* yystackp)
7533 {
7534 /* yyr is the state after the split point. */
7535 yyGLRState *yyr;
7536
7537
3/4
✓ Branch 0 taken 3839 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3782 times.
✓ Branch 3 taken 57 times.
3839 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
7538 57 return;
7539
7540 {
7541 yyGLRState *yyp, *yyq;
7542
2/2
✓ Branch 0 taken 10207 times.
✓ Branch 1 taken 3782 times.
13989 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
7543 13989 yyp != yystackp->yysplitPoint;
7544 10207 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
7545 10207 yyp->yypred = yyr;
7546 }
7547
7548 3782 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
7549 3782 yystackp->yynextFree = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yysplitPoint) + 1;
7550 3782 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
7551 3782 yystackp->yysplitPoint = YY_NULLPTR;
7552 3782 yystackp->yylastDeleted = YY_NULLPTR;
7553
7554
2/2
✓ Branch 0 taken 3782 times.
✓ Branch 1 taken 10207 times.
13989 while (yyr != YY_NULLPTR)
7555 {
7556 10207 yystackp->yynextFree->yystate = *yyr;
7557 10207 yyr = yyr->yypred;
7558 10207 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
7559 10207 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
7560 10207 yystackp->yynextFree += 1;
7561 10207 yystackp->yyspaceLeft -= 1;
7562 }
7563 3839 }
7564
7565 static YYRESULTTAG
7566 11346 yyprocessOneStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk,
7567 YYPTRDIFF_T yyposn, std::shared_ptr<ZScript::ASTFile>& root)
7568 {
7569
2/2
✓ Branch 0 taken 3782 times.
✓ Branch 1 taken 31183 times.
34965 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7570 {
7571 31183 yy_state_t yystate = yystackp->yytops.yystates[yyk]->yylrState;
7572 31183 YY_DPRINTF ((stderr, "Stack %ld Entering state %d\n",
7573 YY_CAST (long, yyk), yystate));
7574
7575 YY_ASSERT (yystate != YYFINAL);
7576
7577
2/2
✓ Branch 0 taken 6504 times.
✓ Branch 1 taken 24679 times.
31183 if (yyisDefaultedState (yystate))
7578 {
7579 YYRESULTTAG yyflag;
7580 6504 yyRuleNum yyrule = yydefaultAction (yystate);
7581
1/2
✓ Branch 0 taken 6504 times.
✗ Branch 1 not taken.
6504 if (yyrule == 0)
7582 {
7583 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7584 yymarkStackDeleted (yystackp, yyk);
7585 return yyok;
7586 }
7587 6504 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], root);
7588
1/2
✓ Branch 0 taken 6504 times.
✗ Branch 1 not taken.
6504 if (yyflag == yyerr)
7589 {
7590 YY_DPRINTF ((stderr,
7591 "Stack %ld dies "
7592 "(predicate failure or explicit user error).\n",
7593 YY_CAST (long, yyk)));
7594 yymarkStackDeleted (yystackp, yyk);
7595 return yyok;
7596 }
7597
1/2
✓ Branch 0 taken 6504 times.
✗ Branch 1 not taken.
6504 if (yyflag != yyok)
7598 return yyflag;
7599 6504 }
7600 else
7601 {
7602 24679 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7603 const short* yyconflicts;
7604 24679 const int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7605 24679 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
7606
7607
2/2
✓ Branch 0 taken 3782 times.
✓ Branch 1 taken 24679 times.
28461 for (/* nothing */; *yyconflicts; yyconflicts += 1)
7608 {
7609 YYRESULTTAG yyflag;
7610 3782 YYPTRDIFF_T yynewStack = yysplitStack (yystackp, yyk);
7611 3782 YY_DPRINTF ((stderr, "Splitting off stack %ld from %ld.\n",
7612 YY_CAST (long, yynewStack), YY_CAST (long, yyk)));
7613 7564 yyflag = yyglrReduce (yystackp, yynewStack,
7614 3782 *yyconflicts,
7615 3782 yyimmediate[*yyconflicts], root);
7616
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3782 times.
3782 if (yyflag == yyok)
7617
1/2
✓ Branch 0 taken 3782 times.
✗ Branch 1 not taken.
3782 YYCHK (yyprocessOneStack (yystackp, yynewStack,
7618 yyposn, root));
7619 else if (yyflag == yyerr)
7620 {
7621 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yynewStack)));
7622 yymarkStackDeleted (yystackp, yynewStack);
7623 }
7624 else
7625 return yyflag;
7626 3782 }
7627
7628
2/2
✓ Branch 0 taken 20897 times.
✓ Branch 1 taken 3782 times.
24679 if (yyisShiftAction (yyaction))
7629 3782 break;
7630
2/2
✓ Branch 0 taken 17115 times.
✓ Branch 1 taken 3782 times.
20897 else if (yyisErrorAction (yyaction))
7631 {
7632 3782 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7633 3782 yymarkStackDeleted (yystackp, yyk);
7634 3782 break;
7635 }
7636 else
7637 {
7638 34230 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
7639 17115 yyimmediate[-yyaction], root);
7640
1/2
✓ Branch 0 taken 17115 times.
✗ Branch 1 not taken.
17115 if (yyflag == yyerr)
7641 {
7642 YY_DPRINTF ((stderr,
7643 "Stack %ld dies "
7644 "(predicate failure or explicit user error).\n",
7645 YY_CAST (long, yyk)));
7646 yymarkStackDeleted (yystackp, yyk);
7647 break;
7648 }
7649
1/2
✓ Branch 0 taken 17115 times.
✗ Branch 1 not taken.
17115 else if (yyflag != yyok)
7650 return yyflag;
7651 }
7652 }
7653 }
7654 11346 return yyok;
7655 11346 }
7656
7657 /* Put in YYARG at most YYARGN of the expected tokens given the
7658 current YYSTACKP, and return the number of tokens stored in YYARG. If
7659 YYARG is null, return the number of expected tokens (guaranteed to
7660 be less than YYNTOKENS). */
7661 static int
7662 57 yypcontext_expected_tokens (const yyGLRStack* yystackp,
7663 yysymbol_kind_t yyarg[], int yyargn)
7664 {
7665 /* Actual size of YYARG. */
7666 57 int yycount = 0;
7667 57 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
7668
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (!yypact_value_is_default (yyn))
7669 {
7670 /* Start YYX at -YYN if negative to avoid negative indexes in
7671 YYCHECK. In other words, skip the first -YYN actions for
7672 this state because they are default actions. */
7673
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 int yyxbegin = yyn < 0 ? -yyn : 0;
7674 /* Stay within bounds of both yycheck and yytname. */
7675 57 int yychecklim = YYLAST - yyn + 1;
7676
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
7677 int yyx;
7678
2/2
✓ Branch 0 taken 7043 times.
✓ Branch 1 taken 53 times.
7096 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
7679
3/4
✓ Branch 0 taken 119 times.
✓ Branch 1 taken 6924 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 119 times.
7043 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
7680 7039 && !yytable_value_is_error (yytable[yyx + yyn]))
7681 {
7682
1/2
✓ Branch 0 taken 119 times.
✗ Branch 1 not taken.
119 if (!yyarg)
7683 ++yycount;
7684
2/2
✓ Branch 0 taken 115 times.
✓ Branch 1 taken 4 times.
119 else if (yycount == yyargn)
7685 4 return 0;
7686 else
7687 115 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
7688 115 }
7689 53 }
7690
2/6
✓ Branch 0 taken 53 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 53 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
53 if (yyarg && yycount == 0 && 0 < yyargn)
7691 yyarg[0] = YYSYMBOL_YYEMPTY;
7692 53 return yycount;
7693 57 }
7694
7695 static int
7696 57 yy_syntax_error_arguments (const yyGLRStack* yystackp,
7697 yysymbol_kind_t yyarg[], int yyargn)
7698 {
7699
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
✓ Branch 2 taken 57 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 57 times.
✗ Branch 5 not taken.
57 yysymbol_kind_t yytoken = yychar == TOK_YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7700 /* Actual size of YYARG. */
7701 57 int yycount = 0;
7702 /* There are many possibilities here to consider:
7703 - If this state is a consistent state with a default action, then
7704 the only way this function was invoked is if the default action
7705 is an error action. In that case, don't check for expected
7706 tokens because there are none.
7707 - The only way there can be no lookahead present (in yychar) is if
7708 this state is a consistent state with a default action. Thus,
7709 detecting the absence of a lookahead is sufficient to determine
7710 that there is no unexpected or expected token to report. In that
7711 case, just report a simple "syntax error".
7712 - Don't assume there isn't a lookahead just because this state is a
7713 consistent state with a default action. There might have been a
7714 previous inconsistent state, consistent state with a non-default
7715 action, or user semantic action that manipulated yychar.
7716 - Of course, the expected token list depends on states to have
7717 correct lookahead information, and it depends on the parser not
7718 to perform extra reductions after fetching a lookahead from the
7719 scanner and before detecting a syntax error. Thus, state merging
7720 (from LALR or IELR) and default reductions corrupt the expected
7721 token list. However, the list is correct for canonical LR with
7722 one exception: it will still contain any token that will not be
7723 accepted due to an error action in a later state.
7724 */
7725
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yytoken != YYSYMBOL_YYEMPTY)
7726 {
7727 int yyn;
7728
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yyarg)
7729 57 yyarg[yycount] = yytoken;
7730 57 ++yycount;
7731 114 yyn = yypcontext_expected_tokens (yystackp,
7732
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
7733
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yyn == YYENOMEM)
7734 return YYENOMEM;
7735 else
7736 57 yycount += yyn;
7737 57 }
7738 57 return yycount;
7739 57 }
7740
7741
7742
7743 static void
7744 57 yyreportSyntaxError (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7745 {
7746
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yyerrState != 0)
7747 return;
7748 {
7749 57 yybool yysize_overflow = yyfalse;
7750 57 char* yymsg = YY_NULLPTR;
7751 enum { YYARGS_MAX = 5 };
7752 /* Internationalized format string. */
7753 57 const char *yyformat = YY_NULLPTR;
7754 /* Arguments of yyformat: reported tokens (one for the "unexpected",
7755 one per "expected"). */
7756 yysymbol_kind_t yyarg[YYARGS_MAX];
7757 /* Cumulated lengths of YYARG. */
7758 57 YYPTRDIFF_T yysize = 0;
7759
7760 /* Actual size of YYARG. */
7761 57 int yycount
7762 57 = yy_syntax_error_arguments (yystackp, yyarg, YYARGS_MAX);
7763
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yycount == YYENOMEM)
7764 yyMemoryExhausted (yystackp);
7765
7766
3/7
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 7 times.
✓ Branch 4 taken 46 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
57 switch (yycount)
7767 {
7768 #define YYCASE_(N, S) \
7769 case N: \
7770 yyformat = S; \
7771 break
7772 default: /* Avoid compiler warnings. */
7773 YYCASE_(0, YY_("syntax error"));
7774 4 YYCASE_(1, YY_("syntax error, unexpected %s"));
7775 7 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
7776 46 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
7777 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
7778 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
7779 #undef YYCASE_
7780 }
7781
7782 /* Compute error message size. Don't count the "%s"s, but reserve
7783 room for the terminator. */
7784 57 yysize = yystrlen (yyformat) - 2 * yycount + 1;
7785 {
7786 int yyi;
7787
2/2
✓ Branch 0 taken 156 times.
✓ Branch 1 taken 57 times.
213 for (yyi = 0; yyi < yycount; ++yyi)
7788 {
7789 156 YYPTRDIFF_T yysz
7790 156 = yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
7791
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 156 times.
156 if (YYSIZE_MAXIMUM - yysize < yysz)
7792 yysize_overflow = yytrue;
7793 else
7794 156 yysize += yysz;
7795 156 }
7796 }
7797
7798
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (!yysize_overflow)
7799 57 yymsg = YY_CAST (char *, YYMALLOC (YY_CAST (YYSIZE_T, yysize)));
7800
7801
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yymsg)
7802 {
7803 57 char *yyp = yymsg;
7804 57 int yyi = 0;
7805
2/2
✓ Branch 0 taken 2401 times.
✓ Branch 1 taken 57 times.
2458 while ((*yyp = *yyformat))
7806 {
7807
4/6
✓ Branch 0 taken 156 times.
✓ Branch 1 taken 2245 times.
✓ Branch 2 taken 156 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 156 times.
2401 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
7808 {
7809 156 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
7810 156 yyformat += 2;
7811 156 }
7812 else
7813 {
7814 2245 ++yyp;
7815 2245 ++yyformat;
7816 }
7817 }
7818 57 yyerror (root, yymsg);
7819 57 YYFREE (yymsg);
7820 57 }
7821 else
7822 {
7823 yyerror (root, YY_("syntax error"));
7824 yyMemoryExhausted (yystackp);
7825 }
7826 }
7827 57 yynerrs += 1;
7828 57 }
7829
7830 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
7831 yylval, and yylloc are the syntactic category, semantic value, and location
7832 of the lookahead. */
7833 static void
7834 57 yyrecoverSyntaxError (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7835 {
7836
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yyerrState == 3)
7837 /* We just shifted the error token and (perhaps) took some
7838 reductions. Skip tokens until we can proceed. */
7839 while (yytrue)
7840 {
7841 yysymbol_kind_t yytoken;
7842 int yyj;
7843 if (yychar == TOK_YYEOF)
7844 yyFail (yystackp, root, YY_NULLPTR);
7845 if (yychar != TOK_YYEMPTY)
7846 {
7847 /* We throw away the lookahead, but the error range
7848 of the shifted error token must take it into account. */
7849 yyGLRState *yys = yystackp->yytops.yystates[0];
7850 yyGLRStackItem yyerror_range[3];
7851 yyerror_range[1].yystate.yyloc = yys->yyloc;
7852 yyerror_range[2].yystate.yyloc = yylloc;
7853 YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);
7854 yytoken = YYTRANSLATE (yychar);
7855 yydestruct ("Error: discarding",
7856 yytoken, &yylval, &yylloc, root);
7857 yychar = TOK_YYEMPTY;
7858 }
7859 yytoken = yygetToken (&yychar, root);
7860 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
7861 if (yypact_value_is_default (yyj))
7862 return;
7863 yyj += yytoken;
7864 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
7865 {
7866 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
7867 return;
7868 }
7869 else if (! yytable_value_is_error (yytable[yyj]))
7870 return;
7871 }
7872
7873 /* Reduce to one stack. */
7874 {
7875 YYPTRDIFF_T yyk;
7876
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
7877
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7878 57 break;
7879
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yyk >= yystackp->yytops.yysize)
7880 yyFail (yystackp, root, YY_NULLPTR);
7881
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
7882 yymarkStackDeleted (yystackp, yyk);
7883 57 yyremoveDeletes (yystackp);
7884 57 yycompressStack (yystackp);
7885 }
7886
7887 /* Pop stack until we find a state that shifts the error token. */
7888 57 yystackp->yyerrState = 3;
7889
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 492 times.
549 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
7890 {
7891 492 yyGLRState *yys = yystackp->yytops.yystates[0];
7892 492 int yyj = yypact[yys->yylrState];
7893
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 435 times.
492 if (! yypact_value_is_default (yyj))
7894 {
7895 435 yyj += YYSYMBOL_YYerror;
7896
2/6
✓ Branch 0 taken 435 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 435 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
435 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYSYMBOL_YYerror
7897
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 435 times.
435 && yyisShiftAction (yytable[yyj]))
7898 {
7899 /* Shift the error token. */
7900 int yyaction = yytable[yyj];
7901 /* First adjust its location.*/
7902 YYLTYPE yyerrloc;
7903 yystackp->yyerror_range[2].yystate.yyloc = yylloc;
7904 YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);
7905 YY_SYMBOL_PRINT ("Shifting", yy_accessing_symbol (yyaction),
7906 &yylval, &yyerrloc);
7907 yyglrShift (yystackp, 0, yyaction,
7908 yys->yyposn, &yylval, &yyerrloc);
7909 yys = yystackp->yytops.yystates[0];
7910 break;
7911 }
7912 435 }
7913 492 yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;
7914
2/2
✓ Branch 0 taken 435 times.
✓ Branch 1 taken 57 times.
492 if (yys->yypred != YY_NULLPTR)
7915 435 yydestroyGLRState ("Error: popping", yys, root);
7916 492 yystackp->yytops.yystates[0] = yys->yypred;
7917 492 yystackp->yynextFree -= 1;
7918 492 yystackp->yyspaceLeft += 1;
7919 }
7920
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
7921 57 yyFail (yystackp, root, YY_NULLPTR);
7922 }
7923
7924 #define YYCHK1(YYE) \
7925 do { \
7926 switch (YYE) { \
7927 case yyok: break; \
7928 case yyabort: goto yyabortlab; \
7929 case yyaccept: goto yyacceptlab; \
7930 case yyerr: goto yyuser_error; \
7931 case yynomem: goto yyexhaustedlab; \
7932 default: goto yybuglab; \
7933 } \
7934 } while (0)
7935
7936 /*----------.
7937 | yyparse. |
7938 `----------*/
7939
7940 int
7941 58757 yyparse (std::shared_ptr<ZScript::ASTFile>& root)
7942 {
7943 int yyresult;
7944 yyGLRStack yystack;
7945 58757 yyGLRStack* const yystackp = &yystack;
7946 YYPTRDIFF_T yyposn;
7947
7948 58757 YY_DPRINTF ((stderr, "Starting parse\n"));
7949
7950 58757 yychar = TOK_YYEMPTY;
7951 58757 yylval = yyval_default;
7952 58757 yylloc = yyloc_default;
7953
7954
1/2
✓ Branch 0 taken 58757 times.
✗ Branch 1 not taken.
58757 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
7955 goto yyexhaustedlab;
7956
2/4
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 58700 times.
✗ Branch 3 not taken.
58757 switch (YYSETJMP (yystack.yyexception_buffer))
7957 {
7958 58700 case 0: break;
7959 57 case 1: goto yyabortlab;
7960 case 2: goto yyexhaustedlab;
7961 default: goto yybuglab;
7962 }
7963 58700 yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc);
7964 58700 yyposn = 0;
7965
7966 58757 while (yytrue)
7967 {
7968 /* For efficiency, we have two loops, the first of which is
7969 specialized to deterministic operation (single stack, no
7970 potential ambiguity). */
7971 /* Standard mode. */
7972 476764154 while (yytrue)
7973 {
7974 476764154 yy_state_t yystate = yystack.yytops.yystates[0]->yylrState;
7975 476764154 YY_DPRINTF ((stderr, "Entering state %d\n", yystate));
7976
2/2
✓ Branch 0 taken 476705454 times.
✓ Branch 1 taken 58700 times.
476764154 if (yystate == YYFINAL)
7977 58700 goto yyacceptlab;
7978
2/2
✓ Branch 0 taken 187798053 times.
✓ Branch 1 taken 288907401 times.
476705454 if (yyisDefaultedState (yystate))
7979 {
7980 187798053 yyRuleNum yyrule = yydefaultAction (yystate);
7981
1/2
✓ Branch 0 taken 187798053 times.
✗ Branch 1 not taken.
187798053 if (yyrule == 0)
7982 {
7983 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7984 yyreportSyntaxError (&yystack, root);
7985 goto yyuser_error;
7986 }
7987
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 187798053 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
187798053 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, root));
7988 187798053 }
7989 else
7990 {
7991 288907401 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7992 const short* yyconflicts;
7993 288907401 int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7994
2/2
✓ Branch 0 taken 288903619 times.
✓ Branch 1 taken 3782 times.
288907401 if (*yyconflicts)
7995 /* Enter nondeterministic mode. */
7996 3782 break;
7997
2/2
✓ Branch 0 taken 76693394 times.
✓ Branch 1 taken 212210225 times.
288903619 if (yyisShiftAction (yyaction))
7998 {
7999 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
8000 76693394 yychar = TOK_YYEMPTY;
8001 76693394 yyposn += 1;
8002 76693394 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc);
8003
1/2
✓ Branch 0 taken 76693394 times.
✗ Branch 1 not taken.
76693394 if (0 < yystack.yyerrState)
8004 yystack.yyerrState -= 1;
8005 76693394 }
8006
2/2
✓ Branch 0 taken 212210168 times.
✓ Branch 1 taken 57 times.
212210225 else if (yyisErrorAction (yyaction))
8007 {
8008 57 yystack.yyerror_range[1].yystate.yyloc = yylloc;
8009 /* Issue an error message unless the scanner already
8010 did. */
8011
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yychar != TOK_YYerror)
8012 57 yyreportSyntaxError (&yystack, root);
8013 57 goto yyuser_error;
8014 }
8015 else
8016
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 212210168 times.
✗ Branch 5 not taken.
212210168 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, root));
8017 }
8018 }
8019
8020 /* Nondeterministic mode. */
8021 3782 while (yytrue)
8022 {
8023 yysymbol_kind_t yytoken_to_shift;
8024 YYPTRDIFF_T yys;
8025
8026
2/2
✓ Branch 0 taken 3782 times.
✓ Branch 1 taken 3782 times.
7564 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8027 3782 yystackp->yytops.yylookaheadNeeds[yys] = yychar != TOK_YYEMPTY;
8028
8029 /* yyprocessOneStack returns one of three things:
8030
8031 - An error flag. If the caller is yyprocessOneStack, it
8032 immediately returns as well. When the caller is finally
8033 yyparse, it jumps to an error label via YYCHK1.
8034
8035 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
8036 (&yystack, yys), which sets the top state of yys to NULL. Thus,
8037 yyparse's following invocation of yyremoveDeletes will remove
8038 the stack.
8039
8040 - yyok, when ready to shift a token.
8041
8042 Except in the first case, yyparse will invoke yyremoveDeletes and
8043 then shift the next token onto all remaining stacks. This
8044 synchronization of the shift (that is, after all preceding
8045 reductions on all stacks) helps prevent double destructor calls
8046 on yylval in the event of memory exhaustion. */
8047
8048
2/2
✓ Branch 0 taken 7564 times.
✓ Branch 1 taken 3782 times.
11346 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8049
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 7564 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7564 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, root));
8050 3782 yyremoveDeletes (&yystack);
8051
1/2
✓ Branch 0 taken 3782 times.
✗ Branch 1 not taken.
3782 if (yystack.yytops.yysize == 0)
8052 {
8053 yyundeleteLastStack (&yystack);
8054 if (yystack.yytops.yysize == 0)
8055 yyFail (&yystack, root, YY_("syntax error"));
8056 YYCHK1 (yyresolveStack (&yystack, root));
8057 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8058 yystack.yyerror_range[1].yystate.yyloc = yylloc;
8059 yyreportSyntaxError (&yystack, root);
8060 goto yyuser_error;
8061 }
8062
8063 /* If any yyglrShift call fails, it will fail after shifting. Thus,
8064 a copy of yylval will already be on stack 0 in the event of a
8065 failure in the following loop. Thus, yychar is set to TOK_YYEMPTY
8066 before the loop to make sure the user destructor for yylval isn't
8067 called twice. */
8068
2/4
✓ Branch 0 taken 3782 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3782 times.
3782 yytoken_to_shift = YYTRANSLATE (yychar);
8069 3782 yychar = TOK_YYEMPTY;
8070 3782 yyposn += 1;
8071
2/2
✓ Branch 0 taken 3782 times.
✓ Branch 1 taken 3782 times.
7564 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8072 {
8073 3782 yy_state_t yystate = yystack.yytops.yystates[yys]->yylrState;
8074 const short* yyconflicts;
8075 3782 int yyaction = yygetLRActions (yystate, yytoken_to_shift,
8076 &yyconflicts);
8077 /* Note that yyconflicts were handled by yyprocessOneStack. */
8078 3782 YY_DPRINTF ((stderr, "On stack %ld, ", YY_CAST (long, yys)));
8079 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
8080 3782 yyglrShift (&yystack, yys, yyaction, yyposn,
8081 &yylval, &yylloc);
8082 3782 YY_DPRINTF ((stderr, "Stack %ld now in state %d\n",
8083 YY_CAST (long, yys),
8084 yystack.yytops.yystates[yys]->yylrState));
8085 3782 }
8086
8087
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3782 times.
3782 if (yystack.yytops.yysize == 1)
8088 {
8089
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3782 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3782 YYCHK1 (yyresolveStack (&yystack, root));
8090 3782 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8091 3782 yycompressStack (&yystack);
8092 3782 break;
8093 }
8094 }
8095 3782 continue;
8096 yyuser_error:
8097 57 yyrecoverSyntaxError (&yystack, root);
8098 57 yyposn = yystack.yytops.yystates[0]->yyposn;
8099 }
8100
8101 yyacceptlab:
8102 58700 yyresult = 0;
8103 58700 goto yyreturnlab;
8104
8105 yybuglab:
8106 YY_ASSERT (yyfalse);
8107 goto yyabortlab;
8108
8109 yyabortlab:
8110 57 yyresult = 1;
8111 57 goto yyreturnlab;
8112
8113 yyexhaustedlab:
8114 yyerror (root, YY_("memory exhausted"));
8115 yyresult = 2;
8116 goto yyreturnlab;
8117
8118 yyreturnlab:
8119
2/2
✓ Branch 0 taken 58700 times.
✓ Branch 1 taken 57 times.
58757 if (yychar != TOK_YYEMPTY)
8120 57 yydestruct ("Cleanup: discarding lookahead",
8121
2/4
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 57 times.
57 YYTRANSLATE (yychar), &yylval, &yylloc, root);
8122
8123 /* If the stack is well-formed, pop the stack until it is empty,
8124 destroying its entries as we go. But free the stack regardless
8125 of whether it is well-formed. */
8126
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 58757 times.
58757 if (yystack.yyitems)
8127 {
8128 58757 yyGLRState** yystates = yystack.yytops.yystates;
8129
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 58757 times.
58757 if (yystates)
8130 {
8131 58757 YYPTRDIFF_T yysize = yystack.yytops.yysize;
8132 YYPTRDIFF_T yyk;
8133
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 58757 times.
58814 for (yyk = 0; yyk < yysize; yyk += 1)
8134
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 58700 times.
58757 if (yystates[yyk])
8135 {
8136
2/2
✓ Branch 0 taken 176100 times.
✓ Branch 1 taken 58700 times.
234800 while (yystates[yyk])
8137 {
8138 176100 yyGLRState *yys = yystates[yyk];
8139 176100 yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;
8140
2/2
✓ Branch 0 taken 117400 times.
✓ Branch 1 taken 58700 times.
176100 if (yys->yypred != YY_NULLPTR)
8141 117400 yydestroyGLRState ("Cleanup: popping", yys, root);
8142 176100 yystates[yyk] = yys->yypred;
8143 176100 yystack.yynextFree -= 1;
8144 176100 yystack.yyspaceLeft += 1;
8145 }
8146 58700 break;
8147 }
8148 58757 }
8149 58757 yyfreeGLRStack (&yystack);
8150 58757 }
8151
8152 58757 return yyresult;
8153 }
8154
8155 /* DEBUGGING ONLY */
8156 #if YYDEBUG
8157 /* Print *YYS and its predecessors. */
8158 static void
8159 yy_yypstack (yyGLRState* yys)
8160 {
8161 if (yys->yypred)
8162 {
8163 yy_yypstack (yys->yypred);
8164 YY_FPRINTF ((stderr, " -> "));
8165 }
8166 YY_FPRINTF ((stderr, "%d@%ld", yys->yylrState, YY_CAST (long, yys->yyposn)));
8167 }
8168
8169 /* Print YYS (possibly NULL) and its predecessors. */
8170 static void
8171 yypstates (yyGLRState* yys)
8172 {
8173 if (yys == YY_NULLPTR)
8174 YY_FPRINTF ((stderr, "<null>"));
8175 else
8176 yy_yypstack (yys);
8177 YY_FPRINTF ((stderr, "\n"));
8178 }
8179
8180 /* Print the stack #YYK. */
8181 static void
8182 yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
8183 {
8184 yypstates (yystackp->yytops.yystates[yyk]);
8185 }
8186
8187 /* Print all the stacks. */
8188 static void
8189 yypdumpstack (yyGLRStack* yystackp)
8190 {
8191 #define YYINDEX(YYX) \
8192 YY_CAST (long, \
8193 ((YYX) \
8194 ? YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX)) - yystackp->yyitems \
8195 : -1))
8196
8197 yyGLRStackItem* yyp;
8198 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
8199 {
8200 YY_FPRINTF ((stderr, "%3ld. ",
8201 YY_CAST (long, yyp - yystackp->yyitems)));
8202 if (*YY_REINTERPRET_CAST (yybool *, yyp))
8203 {
8204 YY_ASSERT (yyp->yystate.yyisState);
8205 YY_ASSERT (yyp->yyoption.yyisState);
8206 YY_FPRINTF ((stderr, "Res: %d, LR State: %d, posn: %ld, pred: %ld",
8207 yyp->yystate.yyresolved, yyp->yystate.yylrState,
8208 YY_CAST (long, yyp->yystate.yyposn),
8209 YYINDEX (yyp->yystate.yypred)));
8210 if (! yyp->yystate.yyresolved)
8211 YY_FPRINTF ((stderr, ", firstVal: %ld",
8212 YYINDEX (yyp->yystate.yysemantics.yyfirstVal)));
8213 }
8214 else
8215 {
8216 YY_ASSERT (!yyp->yystate.yyisState);
8217 YY_ASSERT (!yyp->yyoption.yyisState);
8218 YY_FPRINTF ((stderr, "Option. rule: %d, state: %ld, next: %ld",
8219 yyp->yyoption.yyrule - 1,
8220 YYINDEX (yyp->yyoption.yystate),
8221 YYINDEX (yyp->yyoption.yynext)));
8222 }
8223 YY_FPRINTF ((stderr, "\n"));
8224 }
8225
8226 YY_FPRINTF ((stderr, "Tops:"));
8227 {
8228 YYPTRDIFF_T yyi;
8229 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
8230 YY_FPRINTF ((stderr, "%ld: %ld; ", YY_CAST (long, yyi),
8231 YYINDEX (yystackp->yytops.yystates[yyi])));
8232 YY_FPRINTF ((stderr, "\n"));
8233 }
8234 #undef YYINDEX
8235 }
8236 #endif
8237
8238 #undef yylval
8239 #undef yychar
8240 #undef yynerrs
8241 #undef yylloc
8242
8243
8244
8245
8246 #line 2487 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
8247
8248
8249 /* programs */
8250
8251 std::string yyerrstr(string const& msg, int32_t row, int32_t col, char const* txt)
8252 {
8253 ostringstream out;
8254 out << msg << " ["
8255 << curfilename << " "
8256 << "Line " << row << " "
8257 << "Column " << col;
8258 if (yyleng)
8259 out << " '" << txt << "'";
8260 out << "]";
8261 return out.str();
8262 }
8263 void yymsg(string const& message, int32_t row, int32_t col, char const* txt)
8264 {
8265 zconsole_info(yyerrstr(message,row,col,txt).c_str());
8266 }
8267 void yywarn(string const& message, int32_t row, int32_t col, char const* txt)
8268 {
8269 zconsole_warn(yyerrstr(message,row,col,txt).c_str());
8270 zparser_warn_out(message);
8271 }
8272 void yyerrmsg(string const& message, int32_t row, int32_t col, char const* txt)
8273 {
8274 zconsole_error(yyerrstr(message,row,col,txt).c_str());
8275 zparser_error_out(message);
8276 }
8277 void yydb(string const& message, int32_t row, int32_t col, char const* txt)
8278 {
8279 zconsole_db(yyerrstr(message,row,col,txt).c_str());
8280 }
8281
8282 void yyerror(std::shared_ptr<ASTFile>&, const char *s)
8283 {
8284 yyerrmsg(s);
8285 }
8286
8287 namespace ZScript
8288 {
8289 std::shared_ptr<ASTFile> parseFile(std::string const& filename)
8290 {
8291 std::shared_ptr<ASTFile> result;
8292
8293 // Reset lexer.
8294 yyin = NULL;
8295 resetLexer();
8296
8297 // Read in the file.
8298 yyin = fopen(filename.c_str(), "r");
8299 yyout = std::tmpfile();
8300 if (!yyin)
8301 {
8302 zconsole_error("Can't open input file");
8303 return nullptr;
8304 }
8305 curfilename = filename;
8306
8307 // Run the parser.
8308 if (yyparse(result))
8309 {
8310 result.reset();
8311 }
8312 fclose(yyout);
8313 fclose(yyin);
8314
8315 return result;
8316 }
8317 };
8318